̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ IT ニュース&コラム 2013/ 6/10 通巻623号 縮小版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ >>> Linuxカーネルのコミュニティが閉鎖的になっていないだろうか。 * The others Last week watched News  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ◇ Linuxカーネルの開発状況とトレンド、OpenStackの動向などを解説。 http://cloud.watch.impress.co.jp/docs/event/20130603_601967.html … カーネル開発者をもっと増やしたい。 ◇ これがAndroid携帯ゲーム機 NVIDIA SHIELD の最終版だ。 http://www.itmedia.co.jp/pcuser/articles/1306/07/news030_2.html … まずアメリカで成功するかどうかが分かれ目。 ◇ デジタルマーケティングとトラディショナルマーケティングが融合する時。 http://marketing.itmedia.co.jp/mm/articles/1306/06/news004.html … 客観的な数値による結果も大事だが、まぐれにしないために理論も必要。 ◇ 米MS、Windows RT向け Outlook 2013 RT を無料アップデートとして提供。 http://cloud.watch.impress.co.jp/docs/news/20130606_602477.html … Active Directory に入らない小規模な企業なら使えそう。 ◇ Appleの租税回避はひどすぎる? 抜け穴に悩む欧米諸国。 http://www.itmedia.co.jp/news/articles/1306/07/news039.html … 法律に従っていると言われてしまう政府。 ◇ 宇宙の謎解き、長期戦へ ヒッグス粒子、発見も決着は先送り。 http://www.itmedia.co.jp/news/articles/1306/07/news037.html … 実験の結果にどちらの理論を適用するか。                      Snap Note 3 開発BLOG  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ [ 抽象的な名前にするな - リーダブル・コード(3) ] ソースコードを分かりやすくするには、変数や関数やクラスの名前に 『明確な単語を選ぶ』とリーダブル・コードの本に書いてあります。 明確で分かりやすい名前にすれば読みやすいのは当たり前ですね。 それは誰でも分かっています。 しかし、関数やクラスを設計するときに、なるべく汎用的な機能にして、 あらゆる要求に応えられると考えたり、将来この関数が改良されても 関数名を変える必要がなくなるように、抽象的な名前を付けざるを 得ないと判断してしまうことがあります。 中級者以上は、これが 原因で、不明で分かりにくい名前を付けてしいます。 たとえば、ソースコードをリリースするために、ソースコードの中に [JP] と日本語のコメントがある行を削除するプログラムを作成したと しましょう。 そのプログラムまたは関数にどんな名前を付けますか。 ChangeToRelease のような汎用的に使える将来性のある名前にしますか。 それとも、CutJapaneseComment のような処理内容を示す名前にしますか。 CTR や CJC のような頭文字にしますか。 重複しないように独特な 全く新しい名前にしますか。 プログラムの名前は、頭文字や全く新しい名前が採用されることが多い でしょう。 しかし、商品になるほどのプログラムではないため、 これを採用するわけにはいきません。 もし採用してしまうと、 この程度の規模のプログラムは簡単に作れてしまうため、意味不明な プログラムが大量にできてしまい、車輪の再発明をすることに なるでしょう。(車輪の再発明の意味は検索すれば見つかります) ChangeToRelease のような名前もいいでしょう。 しかし、Linux の シェル・スクリプトなどから呼び出すことになるプログラムであれば、 他の Linux コマンドよりも抽象的なコマンド名であることに気づく はずです。 たとえば、nkf というコマンドは、文字コードを 変換するコマンドですが、具体的にファイルの内容がどのように 変わるのかが、シェル・スクリプトに書かれた nkf を読むだけで 想像できます。(nkf コマンドを知っていれば) CutJapaneseComment という名前のプログラムであれば、シェル・ スクリプトを読むだけでファイルの内容がどのように変わるのかが 想像できます。 そのまんまでダサいと思うことでしょうか、 リーダブル・コードの本に『気取った言い回しよりも明確で正確な ほうがいい』と書いてあり、全くその通りです。 ただ、ソースコードをリリースするプログラムとして拡張する予定が すぐにあるのであれば、ChangeToRelease のような汎用的な名前に する方がいいでしょう。 ただし、パラメーターに、CutJapaneseComment (Linux スタイルなら --cut_japanese_comment オプション)を 指定するようにします。 このように具体的な名前のパラメーターが あるのであれば、付随するプログラムの名前は、CTR のような頭文字や 全く新しい独特な名前でも構いません。 しかし関数にはそのような 名前を付けてはいけません。 ところで、プログラムに処理させることは、ある課題(ユースケース)に 対してある解決策(処理内容)を適用するということなのですが、実は、 ChangeToRelease と CutJapaneseComment の関係も、ユースケースと処理内容 という関係にあります。 ChangeToRelease(ユースケース)の方が抽象的 ではありますが、CutJapaneseComment(処理内容)を抽象化したものが ユースケースではないため、ユースケースを表す名前より処理内容を表す 名前の方が良いわけではありません。 この2つのどちらの名前にするか迷ったときは、ユースケースの名前の関数と 処理内容の名前の関数に分けて、両方の名前を存在させるようにします。 両方とも表現しないと読みやすくなりません。 関数を分けることで処理速度が 遅くなることが気になるようでしたら、どちらかをコメントに表現します。 ユースケースと処理内容の両方について、抽象的ではない単語で表現すれば いいのです。 参考: リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック オライリージャパン ISBN-13: 978-4873115658 2章序文         ソフトウェアデザイン館 Sage Plaisir 21 について  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ホームページ  >>> http://www.sage-p.com/ メルマガ    >>> http://www.mag2.com/m/0000083983.html ブログ     >>> http://blog.livedoor.jp/sage_p/ ツイッター   >>> http://twitter.com/Ts_Neko ダウンロード  >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災  >>> http://www.sage-p.com/saigai.html メール   >>> ts-neko◇sage-p.com ←◇を@に変えてください          緊急メールは件名に「うどんメール」を付けてください。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ このメルマガの登録・解除をするときは… >>> http://www.mag2.com/m/0000083983.htm  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ News & Column are composed by T's-Neko 2013  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄