11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

リーダブルコード備忘録

Last updated at Posted at 2024-07-31

はじめに

今回は、リーダブルコードを読んで備忘録としてメモしておいた内容を共有します。
自分はエンジニア1年目の時に実装時のチートシートとして使用してました。

良いコードとは

プログラミングにおいて、短い行で書かれた頭のいいコード=いいコードではない。
理解しやすいコードこそが良いコード。
読みやすいコードを書くことによって、バグを減らし保守性を高めることができる
自分しか理解できないコードを書くとコードの内容を忘れた頃の自分も苦労する

名前について

  • 汎用的な名前を避ける。
  • スコープが小さければ短い名前も可。
  • 不要な単語を捨てる。例: convertTostringToString
  • エンティティごとに異なるフォーマットを使用する。例: インターフェースはアッパーキャメル。
  • 他の意味と間違えられない名前を付ける。
  • Booleanの意味を明確にする。
  • 名前を複数検討し、機能を知らない人にも伝わるかどうか確認する。

コードの見た目

  • 一貫性のある改行をする
  • 重複を削除
  • 大切な部分を見やすく
  • 縦の線を揃える
  • 似ているコードは似ているように見せる
  • 一貫性と意味のあるコードにまとめる

コメント

  • コードを段落ごとに分割して要約コメントを入れる
  • コードからすぐわかることは書かない
    • 名前でわかりやすくできる場合は名前を変える。
  • コードの欠陥にコメントをつける
  • なぜその定数にしたか背景をコメントするとわかりやすい
  • 初めて読んだ人が疑問に思う箇所にコメントを入れる
  • コードの全体像のコメントを入れる
    • 新たにプロジェクトに参加した人にわかりやすくする。
  • コメントするよりも優れたコード
    • ひどいコードを補うコメントよりもコードを改善する。
  • コメントは領域を取りすぎないように
    • 情報の濃度を濃くする。
  • 曖昧な表現を避ける
  • よくわからない引数はインラインコメントを付ける

ロジックの単純化

  • 条件式の引数
    • 調査対象を左、比較対象(変化する値)を右で統一する。
  • 条件は肯定系を使用
  • 三項演算子
    • デバッガを使うときも使い辛くなるし、理解しにくいから普通に書く(賛否両論)。
    • 三項演算子を使用して簡潔になるときは使う。
  • ネストは浅く
    • 早めに返してネストを浅くする。
  • 巨大な式に対して
    • 式の意味を説明する変数を使用する。

例:

// 改善前
if(line.split(":")[0].trim() === "admin"){
  // 処理
}

// 改善後
const user_authority = line.split(":")[0].trim();
if(user_authority === "admin"){
  // 処理
}

変数

  • 役に立たない一時変数は使用しない
  • 変数のスコープを縮める
  • グローバルな変数をクロージャで包んでプライベートにする
  • 変数操作の場所が多くなると判断が難しくなる

コードの抽出

  • 関数に無関係な部分は切り出す
  • 関数が独立すると汎用コードになり得る
    • テストが楽になるかつ、他のプロジェクトでも使用できる。

まとめ

エンジニアなりたての時にリーダブルコードを読み、実装時にチートシートとして使用しながら実装を行ってました。
こちらが読んでくださったみなさんの役に立てば幸いです。

11
11
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
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?