プログラミング経験としてはほぼ未経験レベルだが、仕事がらコードレビューを行わなければならなくなった。
どういうところを気にしてレビューした方がいいのかわからなかったため、ググって参考になる本はないか探したところ「リーダブルコード」という本を見つけた。
そこで、学んだことを備忘録として書きます。
名前に情報を詰め込む
・名前を見て情報が読み取れるようにする。
・時間やバイト数を計測するものであれば、変数名に単位を入れる。
sample
#現在時刻をミリ秒で計測する
❌var start = (new Date()).getTime();
⭕️var start_ms = (new Date()).getTime(); //ミリ秒とわかるように_msを入れる
・「コンストラクタ」(newを使われる関数)は大文字ではじめ、通常の関数は、小文字ではじめる。
sample
var x = new DatePicker(); //コンストラクタ
var y = new pageHeight(); //通常の関数
誤解されない名前
・限界値を含める時はmin、maxを使用する。
sample
MIN_ITEMS_IN_CART = 10
MAX_ITEMS_IN_CART = 10
・範囲を指定する時はfirst、lastを使用する。
・包含・排他的範囲にはbegin、endを使用する。
・ブール値だとわかるようにis、has、can、shouldを使い、
否定形(例えば、disable_ssl)などは避ける。
美しさ
・コードの「列」を整列すれば、概要を把握しやすくなる
sample
detail = request.Post.get('details');
location = request.Post.get('location');
url = request.Post.get('location');
・意味のある順番を選び、常にその順番を守る。
・空行を使って大きなブロックを論理的な「段落」に分ける。
コメントすべきことを知る
コメントすべきでは「ない」こと
・コードからすぐに抽出できること
・ひどいコードを補うコメントを書くのではなく、コードを修正する。
コメントすべきこと
・なぜコードが他のやり方ではなくこうなっているのか。
・定数をこの値にした背景。
・コードの欠陥にはコメントをつける。
例えば下図のような感じ
記法 | 典型的な意味 |
---|---|
TODO: | あとで手をつける |
FIXMI: | 既知の不具合があるコード |
HACK: | あまり綺麗じゃないけど解決策 |
XXX: | 危険!大きな問題あり |
・コードを読んだ人が「えっ?」って思うところを予想してコメントをつける。
・ファイルやクラスには「全体像」のコメントを書く。