̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ IT ニュース&コラム 2013/ 9/ 2 通巻635号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 動詞をカラフルにするな - リーダブル・コード(9) 読みやすいプログラム・ソースコードにするには、関数名や変数名を適切に 選ぶことです。 関数名(処理)は動詞(命令形)にすること、変数名やプロパティ名(データ) は名詞にすることが、最も基本的な方針です。 関数はデータに対して処理する のですから、動詞になります。 データは処理した前後にある自ら動かないもの なので名詞になります。 そして、動詞や名詞を、副詞や形容詞で分かりやすく します。 ・よい関数名の例:GetExpiredMembers() ・悪い関数名の例:ExpiredMembers() ・よい関数名の例:ToExpiredMember() 上記の悪い例は、関数名であれば悪いですが、プロパティ名であれば悪くあり ません。 なぜなら、get プロパティ関数と set プロパティ関数に分かれていて、 get と set が動詞だからです。 To から始まる関数名も悪くありません。 なぜなら、情報処理は、出力データ を出すことが目的であり、そのために入力データが必要なだけで、手段である 動詞は、どんな手段であっても多くの場合で問題ないからです。 あるとしても、 早く出すなどの副詞が要求されるぐらいでしょうね。 ただし、データが入力 データであるか出力データであるかの違いによって、目的のデータが得られる かどうかが変わるので、それを To で表現しています。 ただし、Get が プロパティ(子ノード)を出力するのに対し、To は全体(オブジェクト)を 変換したものを出力したり、全体の転送先を名詞に書いたりすることが多いです。 関数は、データを処理する内容なので、ほとんどの場合、対象となるデータ に相当する名詞が関数名にあります。 それ以外は、初期化(Initialize)と 終了処理(Finalize)ぐらいですが、それもクラス名に名詞という形でデータが 登場します。 以上から、ソースコードにおいて、動詞は具体的にする必要はあまりなく、 名詞や形容詞を具体的にしていくことだけ気を付けていればよいのです。 特に英語が苦手な日本人にとっては、動詞の抽象的な意味を調べるより名詞 の方が調べやすいということもあります。 リーダブルコードの p32 『もっと「カラフル」な単語を探す』には、 シソーラス(類語辞典)の例が載っていますが、これは動詞だけ載っているので よくありません。 名詞のシソーラスが必要なのです。 あと、リーダブルコードの p55『例:get*()』には、get で始まるメソッドは メンバー変数の値を返すだけの軽量アクセサーであることを期待していると 書いていますが、軽量である必要はありません。 重い処理なら getMean 関数 ではなく computeMean 関数にするべきと書かれていますが、もし、改良して 処理が軽くなったら、呼び出す関数名を変えるのでしょうか。 あまり考え ないで get から初めても大丈夫です。 性能を改善したいときは、トップダウンに処理全体の処理時間から徐々に セクションを分けてボトルネックを見つけていく方法が効果的です。 もし、 ソースコードを見て処理が重い関数が呼ばれているから、そこを改良していく というボトムアップのアプローチをとると、実は、そこの処理はほとんど 行われていないために、改良に費やした時間が無駄になってしまったという ことが発生してしまします。 参考: リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック オライリージャパン ISBN-13: 978-4873115658 2.1章 明確な単語を選ぶ 3.7章 ユーザーの期待に合わせる 注目ニュース 一覧 ◇ 社長がついに自分で相談! Windows XP問題に立ち向かおう。 http://cloud.watch.impress.co.jp/docs/column/smb/20130830_613063.html … サポートが切れると何が問題かを分かりやすく説明。 ダウングレード権も活用。 ◇ 2ちゃんねる、有料ユーザーの3万件を超えるクレジットカード情報が流出。 http://internet.watch.impress.co.jp/docs/news/20130826_612620.html … 2ちゃんねるビューアを買った人は対処が必要。被害は深刻。 ◇ 同人マーク、運用始まる。赤松健さんの新連載から。ライセンス1.0とFAQも正式公開。 http://www.itmedia.co.jp/news/articles/1308/28/news067.html … 同人ショップ販売は、かなりグレーなのか、オプション扱い。 ◇ ネットバンク不正送金被害、7カ月で3億6000万円、基本的なウイルス対策を。 http://internet.watch.impress.co.jp/docs/news/20130827_612747.html … 銀行へのログインのパスワードは他と分け、ブラウザーに保存しないこと。 ◇ Twitter、シリア電子軍から攻撃を受けた可能性。The New York Timesもアクセス不能に。 http://japan.cnet.com/news/service/35036462/ … Twitter というより、DNS が攻撃を受けた。 ◇ Java 6の脆弱性を悪用する攻撃が発生、Java 7へのアップデートを呼びかけ。 http://internet.watch.impress.co.jp/docs/news/20130830_613388.html … Java 6 は、サポートが切れた Windows XP みたいなもの。 ◇ OpenID 2.0の一部実装に脆弱性、その詳細と対策とは。 http://www.atmarkit.co.jp/ait/articles/1308/23/news013.html … 略語が多くてよくわからない。調べないと分からない。 つまり時間がかかる。 ◇ どれが快適! スマホ連携は? 最新ウェブブラウザー6選。 http://ascii.jp/elem/000/000/817/817497/index-4.html … 昔は Chrome が起動が早かったが、今はIEが早い。 ◇ Windows環境で戦う提督に断然お勧めの“艦これ”専用ブラウザー、艦これ 司令部室。 http://www.forest.impress.co.jp/docs/review/20130830_613404.html … Flash ゲームは、標準ブラウザー以外から使われるケースがある。 ソフトウェアデザイン館 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