前回の続き
8章 巨大な式を分割する
説明変数を導入する。
例えば、ifの条件式のところに if(name == "hoge")
と書くところを isNameHoge = name == "hoge"; if(isNameHoge)
と書くと条件式が読みやすくなる。ここでは条件が簡単なのであまり効果はわからないが、条件が複雑な時にはコードが読みやすくなる。
ド・モルガンの法則を使う
ド・モルガンの法則を使うと !(a || b)
を (!a && !b)
と書き換えられる。これはどっちの方が読みやすいかを考えて使うのが良さそう。必ずしも分配した方(後者の条件)が読みやすいとも限らないし読みやすい方をその場に応じて選ぶのが良さそう。けど、前者を脳味噌で理解すると aまたはbでない
ってなっていまいちパッとこないかも。後者のが基本的には読みやすいのかな。。
9章 変数と読みやすさ
一度だけ書き込む変数を使う
これは極力値はイミュータブルの方がいいよねという話。よくある話だし自分はgoとscalaをよく書くのでscalaの方でよく触れる。けど、golangではあんまりそういう考え方ないなーと思ってgolangではどういう考えなのか気になったから今度調べてみらい。
9章は割と意識できてることが多かった。基本的に脳味噌にスタックしておかなきゃいけない情報を減らしたっていうことがメインで話されてた気がする。
10章 無関係の下位問題を抽出する
アプリケーションコードから、低レベルな処理を関数として切り出す
例えば、複数地点の情報を持った場所の情報の配列あるとする。これらの中から最も近い2点を見つけるアプリケーションコードがあった時に、それぞれの2地点間の計算ロジックは「複数地点の中から最も近い2点を見つける」という本質からはずれてくる。こういった本質(いわゆるビジネスロジック的な?)ものとずれてくるものを関数として切り出してアプリケーションコードを純粋にきれいに保つ。それ以外にも、アプリケーション固有でなく完全に汎用的な関数を切り出したり、使いづらいインターフェースのラッパーを自作してアプリケーションコードが汚れていくのを防ぐことができる。
今日はこの辺で。