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 1 year has passed since last update.

リーダブルコードまとめ

Posted at

基本理念

  • 簡潔 ≠ 正義 BUT 短い方がいい
  • 他人・未来の自分が最短で理解できるように

表面上のTechs

命名

  • 明確に

  • Not 汎用的 but 具体的

  • 接頭辞・接尾辞を使う

  • 長さを適切に

  • THE SAURUS (シソーラス)を使って探す

  • 役割がないとき・生存期間が数行のときなどはtmpなどを使っていい

  • 意味の異なるイテレータはaibiなどに分けて使う

  • 識別子のスコープに応じて名前の長さを決定

  • 省略はわかりやすい範囲で

  • 不要な単語は捨てる

  • 名前のフォーマット(apple, Apple, APPLE)で情報を伝える(「大文字は定数」など)

  • 「クラスのメンバ変数ならmember_をつける」など、規約を作る

  • HTMLのclassはハイフン、idはキャメル?

  • filter()-> select(), exclude()

  • clip() -> remove(), truncate()

  • length -> binaries, chars, words

  • max, min ->

  • 範囲指定は first - last

  • 排他的なら begin - end

  • 真偽値なら is, has, can, should

  • 想像できる命名

  • get = 軽い, compute = 重い

美しさ

  • インデントを揃える(フォーマッターでおけ)
  • 一貫した意味のある並び
    • 重要度順
    • アルファベット順
  • 段落に分割して踏み石を提供

コメント

  • コメントするべきでないこと = すぐわかること
  • 優れたコード > ひどいコード + 優れたコメント
  • 自分の考えを記録する
    • 「〜した方がいいかも」
    • アノテーション: TODO, FIXME, HACK, XXX
  • 読み手の立場で考える
  • コードの意図を書く
  • 全体像を簡潔に
  • 名前付き引数 or インラインコメント
  • 代名詞を避ける(this, selfなど -> 具体的な user などにする)
  • 情報密度の高い言葉を使う
  • 実例を書く

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

制御フロー

  • 条件式
    • 調査対象 == 変化しない比較対象
    • 肯定形
    • 単純な条件が先
    • 目立つ条件が先
  • アーリーリターン
  • ネストは浅く

巨大な式の分割

  • 説明変数・要約変数
  • ド・モルガンで NOT を括り出す
  • 一行にこだわらない

変数

  • スコープを縮める (グローバル変数は危険)
  • 変数定義は使う直前
  • 定数(イミュータブル)をなるべく使う

コードの再構成

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

  • 一つのブロックに本質的なものだけ書く
  • 小機能を独立させると改善が楽
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?