【読書メモ】リーダブルコード    (第Ⅰ部 1章〜6章)


目的

客観的に見て「より良い」コードの書き方・考え方を学び、今後のコードの記述に生かすため。今回は、区切りよく第Ⅰ部をまとめた。

一言でいうと、どんな本?

とにかく「他人にとって」、「読みやすい」コードを書くことに専念しろ!!

印象に残った点のメモ(一部自分なりにまとめています)

1章 理解しやすいコード

「読みやすさ」の基本定理:コードは他の人が最短時間で理解できるように書かなければならない

「短い」だけが優れたコードではない。数日後の「自分」も含めた”他人”にとって、理解するまでの時間が短いコードが望ましい

2章 名前に情報を詰め込む

基本はこの6つを意識してコードを書くこと。

1. 明確な単語を選ぶ

シソーラス(類語辞典)などを使って類語で示せないか考えること。

2. 汎用的な名前は避けるor使う状況を選ぶ

ポイントは、その変数に、その変数を定義した目的や値を理解できるかどうか。予め決まりきっているものに汎用的な名前をつけるのはOKだが、そうでない場合、名前は慎重に選ぶこと。

3. 抽象的な名前よりも具体的な名前を使う

「メソッドの動作をそのまま表していることが分かる」など、具体的で動作のイメージが分かりやすい名前を使うこと。複数の概念が混ざる場合、分けて定義しても良い。

4. 接尾辞や接頭辞を使って情報を追加する

大切なこと、知らせたいことがある場合は、変数名に重要な内容を書いてしまうという手もある(単位、危険、注意を喚起する情報など)。

5. 名前の長さを決める

名前の長さは問題ではない(エディタの補完機能により長い名前でも時短で書けるため)。省略することで、新しいメンバーが見たときに「何これ?どんな意味なん?」ってならないように気をつけよう。スコープが数画面におよぶ変数には長い名前をつけること。

6. 名前のフォーマットで情報を伝える

大文字や_(アンダースコア)などに意味を含めること。ローカル変数との区別も意識して。

3章 誤解されない名前

鍵となる考え:名前が「他の意味と間違えられることはないだろうか?」と何度も自問自答すること

つまり、書いている自分の意図が、他の人に正しく伝わる名前を設定しろということ("read"は、「読(み込)む」「読んだ」なのか分からない)。限界値などは、max,min、範囲ならfirst,lastなどを使って伝わりやすくする。

4章 美しさ

見た目が美しいコードを書くこと。個人的に「これ大事だな」と思ったものはこちら。

  • 一貫性のある適切な改行位置
  • 重複する内容があれば、(ヘルパー)メソッドを使って整列させること
  • コードを”段落”に分割する(分割するものの間にコメントを入れるなど)

5章 コメントすべきことを知る

コメントを書く目的は、書き手の意図を読み手に知らせること

  • 逆にコメントにしなくていいこと、「コードを見ればすぐに分かるな」というもの
  • 優れたコメントより、優れた”名前”
  • 優れたコメントとは、自分の考えを記録したもの(「こんな風に考えているんだな」と思考過程が分かるコメントがないとレビューしてもらいにくいらしい)
  • 欠陥のあるコードについて、コメントで書いてOK。大切なのは、これからそのコードをどうするつもりなのか?自由に書くことで、コードの状態把握や改善に向かっていける
  • 「このコードを見てびっくりすることはなんだろう?」「どんな風に間違えて使う可能性があるんだろう?」と自問してみること。
  • ソースコードを読んだだけでは分からない内容や、ファイルやクラスの全体像などを、高レベルのコメントに記述すること。
  • コメントを書く作業のポイントは、
  1. 頭の中にあるコメントをとにかく書き出す
  2. コメントを読んで改善が必要なものを見つける
  3. 改善する

6章 コメントは正確で簡潔に

鍵となる考え:コメントは領域に対する情報の比率が高くなければならない

  • 複数のものを指す可能性がある代名詞は避ける
  • 関数の動作はできるだけ正確に説明する
  • よく分からない引数にはインラインコメントを使う
  • 多くの意味が詰め込まれた言葉や表現を使って、コメントを簡潔に保つ

感想・気付き

  • ポートフォリオ制作で一時的にコードを残す以外でコメントを残したことがなかったので、GitHubに上げる際も、コメントを残していこうと思った。
  • 自分が設定している変数が、ちゃんと意味の理解しやすいものなのか?ポートフォリを改修する際にコードを見直していこうと思った。

書籍のURLはこちら

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック