19
13

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 2025-05-13

はじめに

新人エンジニアのアナタがコードレビューで一番指摘されているのは「命名」に関することじゃなかろうか?
「この命名イケてないね」や「なんでこの命名にしたの?」なんて指摘を何往復もして、
「命名ごときでゴチャゴチャと吐かしてんじゃないッ!」って腸が煮えくり返る気持ちになっていることだろう。

でも実は、命名こそがコードの要
仕様を忘れた未来の自分、コードを読む同僚、保守を任された後輩──
彼らが最初に頼るのが「名前」なんです。

逆に言えば、命名をミスると全員が地雷を踏む。

命名は単なる飾りじゃなくて、コードの意味や意図を伝える大事な要素。
未来の自分やチームメンバーが理解しやすい名前をつけるための考え方をまとめてみた。

❌ NG命名①:「check」は曖昧すぎる(メソッド名編)

メソッド名に「check」を使っていると、何をチェックして何を返してるのかが曖昧になりがち。

public function checkUserStatus(User $user): bool 
{
  // ユーザーのステータスを確認する処理
}

これ、true なら「OK」なの? 「NG」なの?
どういう条件で true なの?──読まなきゃわからん!

⭕ もっと語らせよう

状態を返すなら ishas を。
判定を返すなら canshould を使おう。

public function isUserActiveStatus(User $user): bool {}
public function canUserEditItem(User $user, Item $item): bool {}

メソッド名で意図が語られていれば、中身を開かなくても意味がつかめる。
読み手ファーストな名前づけを心がけよう。


❌ NG命名②:dataとかinfoとかlistとかつけるな(変数名編)

変数名でありがちな「data」や「info」や「list」。
一見それっぽいけど、何を表すデータなのかがまったく伝わらない

$data = getData();     // 何のデータ?
$info = getInfo();     // どんな情報?
$list = getList();     // 何の一覧?
$array = getArray();   // 配列型であることを言われましても……

もちろん、前後のコードを読めば「これは〇〇のデータかな?」と推測はできる。
けど、それって読み手に余計な負荷をかけてるだけ。

命名は「読めばわかる」じゃなくて、「見ただけでわかる」が正義だ。

⭕ 生きた名前に変えよう(複数形も意識)

$userProfile = getUserProfile();       // ユーザーのプロフィール
$orderItems = getOrderItems();         // 注文に紐づくアイテム一覧
$availableProducts = getAvailableProducts(); // 購入可能な商品一覧

特にリストや配列を表す変数は、ListArray と名前につけるより、意味のある名詞+複数形で表現したほうがはるかに伝わる

$users = getActiveUsers();        // アクティブなユーザーたち
$categories = getVisibleCategories();  // 表示対象のカテゴリたち

「複数形で書けるものは、それだけで“リストっぽさ”が伝わる」。
データ構造ではなく、意味を語る命名を心がけよう。


❌ NG命名③:「not」は読む人を混乱させる(否定形は罠)

function isNotVerified(User $user): bool {}

この命名、「not」が入った瞬間に読みにくさ爆増。
if (!isNotVerified()) みたいに二重否定になったとき、混乱はピークに。

if (!isNotVerified($user)) {
  // ……え、これは verified ってこと? not verified ってこと?
}

⭕ 肯定形でストレートに伝えよう

function isVerified(User $user): bool {}
function isGuest(User $user): bool {}
function isUserSuspended(User $user): bool {}

肯定形にすれば、素直に読める。
読みやすさを最優先にしよう。

💡 命名の心得:語らない名前に未来はない

命名で迷ったときは、以下のポイントを思い出してほしい:

  • 「check」は脳死。is / can / has などで意図を明確に。
  • 「data」「info」「list」など中身のない単語に逃げない。
  • 「not」など否定形より、肯定形でシンプルに伝えよう。
  • 略語を避け、できるだけ意味のある単語で。
  • 「見ただけで意味がわかる」名前をつけよう。

命名はセンスじゃない。思いやりと設計力だ。

🎓 まとめ:沈黙するコードより、しゃべるコード

命名は、コードの最前線。
そこに妥協があると、全体がボヤける。

  • 命名が読みやすければ、コード全体の理解スピードが跳ね上がる
  • 命名が曖昧だと、レビューも実装も地獄になる

📢 命名は甘えず、語らせろ。未来の自分を助けるのは、今の名前だ。

19
13
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
19
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?