コード=読みやすくあるべきという観点で見ると、書く際に気をつけるべきは命名と分割という話。
命名を意識するというのは次のような感じです。
例えばこんなコードがあったとします。
一方で、命名がしっかりしていれば、細かなロジックがわからなくても何をしているのか理解できる(ここが重要)はずなので、命名はコードを書く際に意識すべき要素だといえます。
分割を意識するというのは次のような感じです。
次のコードを見てください
(じっくり読めばわかるんだと思いますが、それをさせるのは良いコードではありません)
なぜわかりにくいのかというと、朝ごはんを食べる処理にはいくつか分割できる要素がある(eatBreakfastは抽象度が高い)のですが、それがそのまま(抽象度が高いまま)になっているからです。
そこでeatBreakfastが、実際には、「パンを食べる」と「コーヒーを飲む」から構成されていたとするならば、
命名と分割 、ぜひ意識してコードを書いて見てください。
それでは、良いコード日和を
命名を意識するというのは次のような感じです。
例えばこんなコードがあったとします。
String orange = "Apple"; // これは論外 String info = "Some Information";前者はそもそも書いてあることと中身が違うので、混乱をきたすどころか、バグでも起きた日には迷宮入りしかねません。後者は、結局なんの情報?という部分が欠落しているので、読み手は中身が正しいのかどうか判定できません。(前後の文脈で判断を仰ぐのは、時間の無駄になるので適切ではありません)
一方で、命名がしっかりしていれば、細かなロジックがわからなくても何をしているのか理解できる(ここが重要)はずなので、命名はコードを書く際に意識すべき要素だといえます。
分割を意識するというのは次のような感じです。
次のコードを見てください
void eatBreakfast() { while () { 〜 } while () { 〜 } }eatBreakfastの中で2つの処理が混在しています。これでもいいのでは?という意見はあると思いますが、これでは、ぱっと見た時に、eatBreakfast(朝ごはんを食べる)が2つのwhileループからなることはわかりますが、それが一体何をしているのかはわかりません。
(じっくり読めばわかるんだと思いますが、それをさせるのは良いコードではありません)
なぜわかりにくいのかというと、朝ごはんを食べる処理にはいくつか分割できる要素がある(eatBreakfastは抽象度が高い)のですが、それがそのまま(抽象度が高いまま)になっているからです。
そこでeatBreakfastが、実際には、「パンを食べる」と「コーヒーを飲む」から構成されていたとするならば、
void eatBreakfast() { eatBread(); drinkCoffee(); }となります。明らかにわかりやすくなりました。
命名と分割 、ぜひ意識してコードを書いて見てください。
それでは、良いコード日和を
コメント