0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

リーダブルコードの概要をまとめてみた【前編】

Last updated at Posted at 2021-03-29

#はじめに
本記事ではプログラミングの本として有名な「リーダブルコード」を読んだので、簡単に概要を紹介する。
前編では1章〜7章までを紹介。

#1章 理解しやすいコード
###鍵となる考え
コードは理解しやすくなければならない。
コードは他の人が最短時間で理解できるように書かなければならない。

  • 優れたコードとは他人が最短時間で理解できるコードである。理解できるとは変更を加えたり、バグを見つけたりできるという意味だ。
  • コードは短い方が良い。だが理解するまでの時間を短くする方が大切だ。
  • 理解しやすいコードは設計やテストのしやすさにつながることが多い。

#2章 名前に情報を埋め込む
###鍵となる考え
名前に情報を詰め込む。
気取った言い回しよりも明確で正確な方が良い。

  • 明確な単語を選ぶ。
def Getpage(url):

このメソッドはデータベースやインターネットなどどこから取ってくるかわからない。インターネットであれば、DownloadPage()の方が適切。

また、使用する単語の代替案を調べれば、適切な単語を選択できる。

  • tmpやretvalなど汎用的な名前を避ける。(それ相当の理由があれば良い。例えばtmpは情報の一時的な保管など)
  • 具体的な名前を使って、物事を詳細に説明する。
  • 変数名に大切な情報を追加する。(値に単位あれば書くべき。また、危険や注意が必要な部分には喚起する情報を書く)
  • 長い名前はなるべく避ける(スコープの大きな変数には長い名前をつける。)
  • プロジェクト固有の省略系は使用しない。(新しくチームに入った人が混乱する)
  • 不要な単語は捨てる(DoServerLoop()はServerLoop()で良い)
  • 名前のフォーマットで情報を伝える(HTMLならclassの区切り文字にはハイフン、idの区切りにはアンダースコアを使用する)

#3章 誤解されない名前
###鍵となる考え
名前が「他の意味と間違えられることはないか」と考える。

filter("year <= 2011")

このコードはyearが2011以下のものを指すのか、2011以下を除外したものを指すのかわからない。2011以下ならselect()、除外するならexclude()が良い。

  • 限界値を含めるときは、minとmaxを使う。
  • 範囲を指定するときはfirstとlastを使う。
  • 包括/排他的範囲には、beginとendを使う。

#4章 美しさ
###鍵となる考え
一貫性のあるスタイルは「正しい」スタイルよりも大切だ。

  • 複数のコードブロックで同じようなことをしていたら、シルエットも同じようにする。(メソッドをうまく使う)
  • コードの「列」を整理すれば、概要が把握しやすくなる。(縦の線をまっすぐにする)
  • ある場所でA・B・Cのように並んでいたら他の場所でB・C・Aのように並べてはいけない。順番に意味を持たせ、常にその順番を守る。(後で見たときに、要素があるかどうかわかりやすくなる)
  • 空行を使って大きなブロックを論理的な「段落」に分ける。(グループごとに考えを分けられる。後から見たときに、自分の考えている場所が分かりやすくなる)

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

###鍵となる考え
コメントの目的は、書き手の意図を読み手に知らせることである。

  • コードからすぐにわかることは書かない。
  • 酷いコードはコメントで補助するのではなく、コードそのものを修正する。(酷い名前の関数など)
  • コードの欠陥はTODO:(後で手をつける)やXXX:(大きな問題がある)などを使って示す。
  • コードを読んだ人が悩みそうなところを予想してコメントを書く。
  • 読み手が細部にとらわれないように、コードブロックにコメントをつけて概要をまとめる。

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

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

  • 「それ」や「これ」といった代名詞は避ける。
  • 関数の動作はできるだけ正確に説明する。
  • 入出力の実例をコメントに書くには、値を慎重に選ぶ。
  • 多くに意味が詰め込まれた言葉や表現を使って、コメントを簡潔に保つ。(情報密度が高くなる)

#7章 制御フローを読みやすくする

###鍵となる考え
条件やループなどの制御フローはできるだけ「自然」にする。コードの読み手が立ち止まったり読み返したりしないように書く。
行数を短くするよりも、他の人が理解するのにかかる時間を短くする。
要約するときはコードを新鮮な目で見る。

  • 条件式の引数は左側が調査対象(変化する値)、右側は比較対象(安定した値)にする。
  • 条件は否定系よりも肯定系を使う。(例えば unlessや!=はなるべく使わない)
  • 単純な条件を先に書く。ifとelseが同じ画面に表示されるので見やすい)
  • 関心を引く条件は先に書く。(優劣が衝突する場合は自分で判断する)  
  • 三項演算子はなるべく使わない。(短くなるが、コードが読みにくくなることが多い)
  • ネストは浅くする。(値を早めに返してあげると浅くできる。)

後編に続く(執筆中)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?