インプット:リーダブルコード(2章)

今まで、変数名や関数名は、それっぽい英語から命名するだけで、
その名前からいかに情報を伝えるかなんて、考えていませんでした。
自己学習だから、一人で開発することを前提にして
進めてしまっていたからですね・・・。

でも!実務になったら、他者がいるのは当たり前。
他者を意識したコードって、処理の内容が分かりやすい!無駄がない!
というコードだと思っていました。
しかし、名前付けが、他者を意識したコードへの大きな第一歩と言えますね!


第2章では、適切な名前を付けるには、
・語彙力
・名前を付ける変数や関数の役割に対する理解力
・他者への意識(誰からみても適当な名前か?)
が必要だと学びました。



例えば、わたしのポートフォリオからすぐに発見したこの2つ!


①getFoodInfo()
②getAllerginFood()


めっちゃ似てる!!(笑)
どんな違いがあるか分かりますか?


①は、すべてのアレルギー成分(14種類)をDBからとってくる関数です。
一方②は、ログインユーザがアレルギーをもっている成分を含んでいる献立を引っ張ってくる関数です。
ちょっと②の文は修飾語が多くて、分かりにくいですね・・・
(ちなみに、被修飾語は「献立」です!)
②の関数は、具体的には、
大豆が食べられない生徒に対して、大豆が入っている献立を知らせるための関数です。
こうやって考えると、①と②ではとってくるデータの中身が結構違いますね。


名前を付けるために、まず、各関数のポイントを考えると
①は、・DBから
   ・すべての
   ・アレルギー成分をとってくる
だから、getAllFoodComponentsFromDB とか?

また、②は、 ・DBから
       ・ログインユーザのもつ食品アレルギーと一致する
       ・すべての献立をとってくる
だから、getLoginUserAvoidAllMenusFromDB ????

本には、短くて情報が不足している名前よりは長い方が良いって書いてあったけど
これはどうなんだ??
長いと逆に読みづらくなる可能性もあるし、
名前付け初心者のうちは、実際に他の人にみてもらって
他者視点を養っていきたいと思います!


今回は以上2つを取り上げましたが、
全体的に変数名や関数名にFoodを多様していることに気づきました。
そのFoodは、献立なのか、食物成分のことなのか、を分けて、
さらに、それぞれを表す単語を統一する必要がありますね。