読書

『リーダブルコード』 簡単ですぐ使える教訓

すぐ使えそう or 重要性を再認識した教訓を抜粋しました。


最短で理解できるコード > 最短で書けるコード


  • if文を書く場合、処理が短くシンプルなら三項演算子でOK。そうでないなら省略せずに書いたほうがわかりやすい。短いコードが善とは限らない


    • return true;のような2~3語くらいの処理なら参考演算子で書いてもOK。



  • 未来の自分は他人だと思ってコーディングすること。使い捨てのコードを書かない。


名前は具体的で分かりやすくする


  • int型の変数の名前をsizeとすると何のサイズなのかわからない。ファイルの容量ならbytes、採寸ならheightwidthのほうがわかりやすい。


重要な属性を名前に加える


  • ユーザが入力したコメントは表示する前にエスケープ処理をはさむ必要があるため、変数名はcommentよりもunescaped_commentのほうが親切。(エスケープ処理の必要性を認識しやすい)


紛らわしい単語は避ける


  • ある条件で絞り込むメソッドfilter()・・・条件に該当するものを取得するならselect()、除外したものを取得ならexclude()のほうがわかりやすい。


コメントを最初にまとめて書いたほうが綺麗な場合もある


  • 例えば、同じクラスを使用して複数のインスタンスを生成するとき、

val veryVeryLongInstansName = 

veryVeryLongClassName(
"foo", /* 単位1 */
"bar", /* 単位2 */
"baz", /* 単位3 */
"qux" /* 単位4 */)
// ↓同じクラスを使用したインスタンス生成処理が続く。。。↓


  • ↓こちらのほうが単位のコメントを繰り返し書かなくて済むので綺麗。

// veryVeryLongClassName(param1,    param2,     param3,    param4)

// [単位1] [単位2] [単位3] [単位4]
val veryVeryLongInstansName =
veryVeryLongClassName("foo", "bar", "baz", "qux")
// ↓同じクラスを使用したインスタンス生成処理が続く。。。↓


コメントを残す ※ただし、コードからすぐわかることは書かない



  • メソッド名を和訳しただけのコメントは不要


  • コードだけでは判断できない内容をコメントとして書く

  • 定義された定数の値の決め方、背景(なぜその値に設定したのか)についてコメントを残したほうが親切。

  • 動作の"向き"を明確にする。


    • 例)「変更する」→「増やす or 減らす」




if/else文で先に書いたほうが良い条件の基準


  • ※あくまで基準。必要に応じて自己判断。


    1. 否定形よりも肯定系

    2. シンプルな内容

    3. 目立つ内容(重要なパラメータを使用している等)