LoginSignup
1
2

More than 3 years have passed since last update.

リーダブルコードまとめ

Last updated at Posted at 2020-04-26

リーダブルコードまとめ

概要

全体的な内容を把握するために簡単にまとめました.詳細は書籍でご確認ください.
リーダブルコード

第一部 表面上の改善

1章 理解しやすいコード

コードは他の人が最短時間で理解できるように書かなければならない
行数を短くするよりも,他の人が理解するのにかかる時間を短くする

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

  • 明確な単語を選ぶ
    • 汎用的な名前はつけない,変数の値表すような名前をつける
  • 名前に情報を追加する
    • 値に単位や属性をつける
  • 名前の長さを決める
    • プロジェクト固有の単語を省略形にしてはいけない
  • 名前のフォーマットで情報を伝える
    • フォーマット規約を整える(ローカル変数,メンバ変数など見分けられるようにするため)

3章 誤解されない名前

  • 限界値を含めるときはmin,maxを使用する
  • 範囲を指定するときは,firstとlastを使用する
  • 包含/排他的範囲にはbegin, endを使用する
  • 複数の名前を検討する

4章 美しさ

  • 原則
    • 読み手が慣れているパターンと一貫性のあるレイアウトを使用する
    • 似ているコードは似ているように見せる
    • 関連するコードはまとめてブロックにする
  • 一貫性のある簡潔な改行位置
  • メソッドを使った整列
  • 縦の線を整列させる
  • コードを段落に分割させる
    • 似ている考えをグループにまとめる

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

  • コードからすぐにわかることはコメントに書かない
  • 自分の考えを記録する
  • コードの欠陥にコメントをつける
  • 定数に名前をつける(なぜその値で良いのかを説明する)
  • 全体像のコメント
  • 要約コメント

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

  • コメントは領域に対する情報の比率が高くなければならない
  • 指示語をやめて,正式な名称を記述する
  • 入出力結果の実例を書く(関数などに)
  • コードの意図を書く(処理全体の概要など)

第2部 ループとロジックの単純化

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

  • 条件式の引数の並び順は調査対象の式,比較対象の式の順にする
    • (例) if (length >= 10)
  • if/elseブロックの並び順
    • 条件は否定形より肯定形を使用する
    • 単純な条件を先に書く(複雑なものは条件化しにくい)
    • 関心を引く条件や目立つ条件を先に書く
  • do whileループを避ける
  • goto文を使用しない
  • ネストを浅くする
    • コードを変更するときは,一歩下がって全体を俯瞰的に見て,読みにくくないか確認する
  • 実行の流れを追いにくくなる構成要素の使用をコード全体の割合として大きくしないこと
    • 構成要素
      • スレッド:どのコードがいつ実行されるのかよくわからない
      • シグナル:他のコードが実行される可能性がある
      • 例外:いろんな関数呼び出しが終了しようとする
      • 関数ポインタと無名関数:コンパイル時に判別できないので,どのコードが実行されるのかわからない
      • 仮想メソッド:object.VirtualMethod()は未知のサブクラスのコードを呼び出す可能性がある

8章 巨大な式を分割する

  • 式を表す変数を用意する → 説明変数
  • 大きなコードの塊を管理,把握を容易にするために要約変数を用いる
  • 条件分にはド・モルガンの法則を使用する

9章 変数と読みやすさ

  • 問題点
    • 変数が多いと変数を追跡するのが難しくなる
    • 変数のスコープが大きいとスコープを把握する時間が長くなる
    • 変数が頻繁に変更されると現在の値を把握するのが難しくなる
  • 余計な変数を削除する(一時変数など無くても困らない変数)
  • 変数のスコープを縮める(グローバル変数などスコープが大きい変数は追跡が難しい)
  • 変数は一度だけ書き込む(何度も変更すると値の追跡が難しくなる)

第3部 コードの再構成

プログラムの主目的と関係のない「無関係の下位問題」を抽出する
コードを再構成して,一度に1つのことをやるようにする
最初にコードを言葉で説明する.その説明を元にしてきれいな解決策を作る

10章 無関係の下位問題を抽出する

  • 考え方
    • 関数やコードブロックを見て「このコードの高レベルの目標は何か?」と自問する
    • コードの各行に対して「高レベルの目標に直接的に効果があるのか? あるいは,無関係の下位問題を解決しているのか?」と自問する
    • 無関係の下位問題を解決しているコードが早朝量あれば,それらを抽出して別の関数にする.(関数の中に関数化できそうなまとまった処理があれば,関数化する)

11章 一度に1つのこと

  • 一度に一つのタスクを行う

12章 コードに思いを込める

  • ロジックを明確に説明する
  • ライブラリを知る
  • 解決策を言葉で説明する

13章 短いコードを書く

  • コードを小さく保
    • 汎用的な「ユーティリティ」コードを作って,重複コードを削除する.
    • 未使用のコードや無用の機能を削除する
    • コードの「重量」を意識する.軽量で機敏にしておく.
  • ライブラリについて知る(定期的にAPIを読んで,標準ライブラリについて頭の片隅においておく)
1
2
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
1
2