久しぶりにきのこの当該部分を読んだので雑記です。(そしてたまにはC#で例示を書いてみる)
名付けは重要である
リーダブルコードで以下のようなことが語られている
- 汎用的な名前は避ける、
a
とかiz
とか一見して用途のわからない名前はつけない - 抽象的な名前より具体的な名前を使う。
change
とかではなくChangeNextPage
とか。 - 曖昧・解釈違いを起こす言葉は使わない。時間なら
time
ではなくsec
とかhour
を使うなど。
読み違いはバグを生む
極論であるかもしれないが、作り手があまり使い手を意識しない名付けをすると、使い手側が読み違い(ミスリード)を起こし、そのミスリードによってバグを生みかねない。
例
例えばこんな名前のメソッドがあったとする
public void SetLog()
これで連想するのは「ログをセットするということだから、なにか変数に代入するだけなのかな」と思う。だが実際に書かれているのが以下のような記述。
public void SetLog() { string createText = "Logging..." File.WriteAllText("action_log.txt", createText); }
SetLog
は実際はログを実ファイルに書き出す処理だった。言葉を広く捉えればセットではあるが、もっと具体的に書いたほうがよかったと思える。例えば…
public void WriteLogFile() { string createText = "Logging..." File.WriteAllText("action_log.txt", createText); }
としてあげたほうが直感的だしミスリードも起こしにくい。
例を踏まえて
例に出した内容は極端かつ、とても些細なことではあるが、もし些細な使われ方のミスリードが積み重なると、大きな処理の意図違いを起こす危険性がある。そうなってから全体を整えて行く作業はとても大変なことが多い。そのため、日頃の小さなすれ違いを減らすことが、コード全体の健全化を図れるのではないかなと思っています。
まとめ
- 名前付けは重要
- メソッド名や変数名はミスリードすると使われ方が間違われる可能性があるので、なるべく誤読を減らすように名前に気を使うべき。
参考リンク
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
- 購入: 68人 クリック: 1,802回
- この商品を含むブログ (140件) を見る
- 作者: 和田卓人,Kevlin Henney,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/18
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 2,107回
- この商品を含むブログ (350件) を見る