エンジニアのバイブル「リーダブルコード」読んでみた 三章
リーダブルコードの二章を読み終えたのでまとめです。
三章「誤解されない名前」
名前が他の意味と間違えられることがないか気をつける
前章で名前に情報を詰め込むことの大事さを学んだと思います。
その際に気をつけるべきことは詰め込んだ情報が間違っていた場合、歪曲した意図が伝わり本来想定していない挙動することが考えられる。
間違う可能性のある例:filter
object.filter(hoge)
このようなコードがある場合
"hoge"を含むモノを選択して取得するのか
"hoge"を含むモノを除外して取得するのか
実際にコードを見てみないとわからない問題が発生する。
なので選択するのであれば"select"、除外するのであれば"delete"にするなどの対応を行う方が良い。
このように意図を間違わないように最低限気をつけることが以下の三点
限界値を含めるときはminとmax
範囲を指定するときはfirstとlast
包含/排他的範囲にはbiginとend
限界値を含めるときはminとmax
const items_in_cart_limt = 10
limitという名前だと10という数値が規定の未満か以下なのかの情報が欠如しており想定外の動作を引き起こす可能性がある。
範囲を指定するときはfirstとlast
開始と最後を示す際の単語としてはstart-stopも存在していると思う。
startははじまりの場所なので良いがstopの場合だとその値を含めるのか含めないのかの情報が欠如しており想定外の動作を引き起こす可能性がある。
包含/排他的範囲にはbiginとend
printEventsInRange("0116 12:00ap", "0117 12:00ap")
先ほどの問題と同様に"printEventsInRange"の中身によって含か含まないかの判断を行うことになる。
printEventsInRange("0116 12:00ap", "0117 11:59pm")
// 関数の仮変数はbeginとendが適切
printEventsInRange(begin, end)
このようにすることでより理解しやすく簡単に理解することがいい
また英語にはちょうど最後の値を超えたところをいう意味の言葉がないのでこのようにしていする方が理解がしやすい
最後に一点変数名で気をつけることがあります。
それが「boolean型で成否判定などyes or noを示す際はisやhasなどを使用する」です。
また関数としてboolean型を返す場合そのメソッドは肯定系にした方が声に出して読みやすいかつ短くて済むのでおすすめ。
いい名前は情報が多いかつ誰がみても感じ方、受け取り方に差が生まれないものである。