xxxさんの備忘録

xxさんのブログです.xxさんはネカマです.

リーダブルコード (第ニ部)

#2部

##7制御フローを読みやすくする
条件やループなどの制御フローを読みやすくする。
・条件式の引数の並び順
ex.左側(調査対象の式),右側(「比較対象」の式。あまり変化がない)
・if/elseブロックの並び順
→・条件は否定よりも肯定系を使う
・単純な条件を先に書く。(ifとelseが同じ画面に表示されるように書く)
 ・関心を引く条件や目立つ条件を先に書く
これらを状況によって判断し注意していく。
三項演算子
他人が読んで理解するのに時間のかからないコードを意識する
・do/whileループを避ける
・関数から早く返す
・悪名高きgoto(gotoは基本的には使わない)
・ネストを浅くする
・実行の流れで複雑になる例(バグの発見が難しくなるものなど)
→スレッド、シグナル/刷り込みハンドラ、例外、関数ポインタと無名関数、仮想メゾットなど

##8巨大な式を分割する
コードの式が大きくなれば理解が難しくなる。
→巨大な式はわかりやすい大きさに分割する

・説明変数
式を表す変数を使用する

・要約変数
大きなコードの塊を小さな名前に置き換えて、管理や把握を簡単にする変数のことを要約変数と呼ぶ。

・ド・モルガンの法則を使う
・短絡評価の悪用
→短いコードよりも、あとで人が読んでわかりやすいものを目指す。
・複雑なロジックと格闘する
→「反対」から問題を解決してみる(ex.「重なる値」を求めていた場合には「重ならない」方を考えるなど)
・巨大な文を分割する
(・式を簡潔に書く方法→マクロを定義する)

##9変数と読みやすさ
変数を適当に使うと理解しにくくなる。
→変数が多いと変数を追跡するのが難しくなる
 変数スコープが大きいとスコープを把握する時間が長くなる
 変数が頻繁に変更されると現在の値を把握するのが難しくなる

・変数を削除する
→コードが読みやすくならない変数を削除する
 ・約に立たない一時変数(複雑な式を分割していない。より明確になっていない。一度しか使っていないため重複コードの削除になっていない)

→中間結果を削除する

→制御フロー変数を削除する

→△変数スコープを縮める(※用例が多いがいまいちわかってない)
 ・変数のことが見えるコード行数をできるだけ減らす。

・変数は一度だけ書き込む
→変数を操作する場所が増えると、現在の値の判断が難しくなる