📖

リーダブルコードから学んだ「実務で使える変数名」の付け方

に公開

はじめに

エンジニア歴2年半の私が『リーダブルコード』を読み進める読書記録シリーズです。今回は変数名や関数名の付け方について学んだことを、実務経験と照らし合わせながらまとめてみました。「なんとなく」で付けていた名前を見直すきっかけになりそうです。

読んで気づいた5つのポイント

1. 具体的な動詞の選択

普段何気なく使っているgetprocessなどの曖昧な動詞を、もっと具体的にできることに気づきました。

実務での改善例:

  • getUserInfo()fetchUserProfile()(APIから取得するなら)
  • processOrder()validateOrderDetails()(バリデーション処理なら)
  • updateData()saveUserPreferences()(何を更新するかを明確に)

2. 汎用的すぎる名前の回避

tmpdataresultなどの名前を多用していたことを反省しました。

よくやってしまっていた例:

// ❌ 改善前: 何のデータかわからない
const data = await api.getUser();
const result = validateData(data);

// ✅ 改善後: 何を扱っているか明確
const userProfile = await api.getUser();
const validationResult = validateUserProfile(userProfile);

3. 単位を含めた命名

  • timeouttimeoutMs
  • cacheExpirycacheExpiryMinutes
  • fileSizefileSizeBytes

4. スコープに応じた名前の長さ調整

関数内のループ変数はiでも良い、クラスのメンバ変数は詳細な名前を付けるべき、という考え方です。

実務での使い分け:

  • ループ変数:ij(短いスコープ)
  • インスタンス変数:currentUserSessionId(長いスコープ)
  • グローバル設定:MAX_API_RETRY_COUNT(最も詳細に)

5. 命名規則による情報伝達

チーム開発では特に重要だと感じました。

  • プライベートメソッド:_calculateTotalPrice()
  • 定数:API_TIMEOUT_MS
  • ブール値:isUserLoggedInhasValidToken

視覚的に情報が伝わるので、コードレビューでも指摘が減りそうです。

実務ですぐに活かしたいこと

  1. 単位を名前に含める → バグ防止の第一歩
  2. 汎用的な名前を具体的に → コードレビューでの指摘も減りそう
  3. スコープに応じた名前の長さ調整 → 保守性の向上

まとめ

普段「コードが動けばOK」という意識でしたが、後から読む人(未来の自分含む)のことを考えるという視点が抜けていました。変数名一つとっても、チーム開発での配慮が重要です。

最後まで読んでいただきありがとうございました。

参考

Discussion