0
1

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-02-20

はじめに

この記事はリーダブルコード(ダスティン・ボズウェル著、オライリージャパン)を主に参照して作成しております。

変数名決定の大前提

コーディングにおいて分かりやすく・メンテナンスしやすい変数名の決め方 が重要になる
1,変数名を見ただけで、何を表しているのか分かること
2,チーム開発でも統一しやすいルールを適用する

変数名決定の基本的なルール

1. 変数名は「意味が分かる」ようにする(val / data などの曖昧な名前は基本的にNG)
2. ブール値は isAdmin, hasPermission, canEdit のように is / has / can を使う
3. リストは複数形(users)、辞書型は Map(userMap)にする
4. 数値を表す変数には count / total / max を含める(userCount)
5. フラグの名前は should / enable / disable を使う(shouldNotify)
6. 定数は UPPER_CASE_SNAKE_CASE にする(MAX_UPLOAD_SIZE)
7. 命名の一貫性を保つ(チーム内でスタイルガイドを決めると良い)

1. 変数名は意味を持たせる

 NG例→(意味が分かりにくい例)
  $user = get();  // 何を取得するのか分からない
  $val = 100;  // val って何?

 模範例→(意味を持たせる
  $user = getCurrentUser();  // 現在のユーザーを取得することが明確
  $maxUploadSize = 100;  // アップロードの最大サイズを表している

🌟ここをチェック→関数名と組み合わせて「何をする変数なのか」をはっきりと明確にさせる

2. 具体的な単語を使う(抽象的なものはNG)

NG例→(抽象的すぎる
 $data = getData();  // どんなデータか分からない
 
 模範例→(具体的にする
  $users = getAllUsers();  // ユーザーを取得することが分かる

🌟ここをチェック→「data」「value」「flag」などの曖昧な表現の名前は避ける

3. ブール値は「真偽が分かる名前」にする

  NG例→(意味が曖昧
  $admin = true;  // これは「管理者のデータ」なのか「管理者かどうか」なのか?

  模範例→(is/has/can で始める
   $isAdmin = true;  // ユーザーが管理者かどうか
   $hasPermission = false;  // 権限を持っているかどうか
   $canEdit = true;  // 編集可能かどうか

🌟ここをチェック→ブール値(true / false)は is / has / can で始めると分かりやすいので推奨する

4. 配列・リストの変数名は複数形にする

   NG例→(単数形だと配列と分からない
    $user = getUsers();
   
   模範例→(複数形にする
     $users = getUsers();  // `users` なら「複数のユーザー」を扱うことが分かる

🌟ここをチェック→リストや配列を示す変数名は s をつけて複数形にする!

5. 数値を表す変数には count / total / max を使う

 NG例→(数値と分からない
 $users = 100;  // 配列なのか、ユーザー数なのか分からない

 模範例→(数値と分かるようにする
 $userCount = 100;  // ユーザーの合計数
 $maxUploadSize = 5000;  // アップロードの最大サイズ(KB単位)

🌟ここをチェック→ 数値を示す変数には count / total / max などを使用する

6. 定数は UPPER_CASE_SNAKE_CASE にする

 NG例→(小文字だと変数と区別しにくい
  $maxsize = 5000;
  
 模範例→(定数は大文字 & アンダースコア区切り
  define('MAX_UPLOAD_SIZE', 5000);
  const DEFAULT_PAGE_SIZE = 20;

🌟ここをチェック→ 定数は UPPER_CASE_SNAKE_CASE にすると一目で定数と分かる!

7. コレクションや辞書型は map / list / assoc でできる限り示す

NG例型が分からない
 $items = getItemList();

模範例型を意識する
 $userList = getUserList();  // ユーザーのリスト
 $userMap = getUserMap();  // キーがユーザーIDの連想配列

🌟ここをチェック→リストや辞書型を扱う変数には List や Map を付けると理解しやすくなる

8. フラグの名前は should / enable / disable を使う

NG例何を意味しているか分からない
 $flag = true;

模範例(意図を明確にする
 $shouldNotify = true;  // 通知を送るかどうか
 $enableCache = false;  // キャッシュを有効にするかどうか

🌟ここをチェック→動作を制御するフラグには should / enable / disable を使うと理解しやすい

9. 一貫性を持たせる

 NG例→(同じ意味の変数なのに名前の付け方がバラバラ
  $max_users = 100;
  $totalUserCount = 100;
  userLimit = 100;
  
 模範例→(命名規則を統一する
   $maxUsers = 100;
   $totalUsers = 100;

🌟ここをチェック→ チームで変数名のスタイルを統一すると可読性が向上するので推奨

10. 省略しすぎない(ただし短く)

 NG例→(略しすぎて意味不明
  $u = getUser();
  $t = getTime();
  
 模範例→(短くても意味が分かるように
  $user = getUser();
  $timestamp = getTimestamp();

🌟 ここをチェック→省略しすぎると逆に読みにくくなるので、適切な長さにする事を意識する

11. よく使う変数名のパターン

【用途】	        【変数名の例】	【説明】
現在のユーザー	$currentUser	ログイン中のユーザー
ユーザー一覧	    $users	        ユーザーのリスト
投稿の件数	    $postCount	    投稿数
最大値	        $maxUploadSize	アップロードの最大サイズ
設定情報	        $config	        設定データの配列
データキャッシュ	$cacheEnabled	キャッシュが有効かどうか
フォームデータ	$formData	   フォームからの入力値
通知を送るか	    $shouldNotify	通知を送るかどうか
権限チェック	    $hasPermission	ユーザーが権限を持っているか

12. 参考文献

ダスティン・ボズウェル(著) リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック  オライリージャパン 初版

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?