Help us understand the problem. What is going on with this article?

リーダブルコードを読んでの備忘録

More than 1 year has passed since last update.

プログラミング経験としてはほぼ未経験レベルだが、仕事がらコードレビューを行わなければならなくなった。
どういうところを気にしてレビューした方がいいのかわからなかったため、ググって参考になる本はないか探したところ「リーダブルコード」という本を見つけた。
そこで、学んだことを備忘録として書きます。

名前に情報を詰め込む

・名前を見て情報が読み取れるようにする。

・時間やバイト数を計測するものであれば、変数名に単位を入れる。

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: 危険!大きな問題あり

・コードを読んだ人が「えっ?」って思うところを予想してコメントをつける。

・ファイルやクラスには「全体像」のコメントを書く。

Takafumi_Ueki
都内でエンジニアの仕事をしています! キータを通して、学んだことを投稿していきたいと思ってます! よろしくお願いします
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away