今回やること
この記事では、曖昧な変数名と関数名を、意味が伝わる名前に直します。
命名を直すだけで、コメントを増やさずにコードが読みやすくなることがあります。
前提条件
- JavaScriptまたはTypeScriptの基本構文が読める
- 変数、関数、booleanが分かる
- 動作を変えずに名前だけ改善したい
Step 1: 曖昧な名前を見る
function handle(data: User) {
const flag = data.age >= 18;
if (flag) {
return "ok";
}
return "ng";
}
短いコードですが、何を処理しているのか分かりにくいです。
Step 2: 変数の意味を考える
| 今の名前 | 実際の意味 |
|---|---|
handle | 年齢確認をする |
data | ユーザー |
flag | 成人かどうか |
"ok" | 利用可能 |
"ng" | 利用不可 |
中身を読まないと意味が分からない名前を、役割が分かる名前に変えます。
Step 3: 名前を直す
function getAgeCheckResult(user: User) {
const isAdult = user.age >= 18;
if (isAdult) {
return "available";
}
return "unavailable";
}
isAdult のように boolean には is を付けると読みやすくなります。
Step 4: さらに意図を明確にする
戻り値が文字列である必要がないなら、booleanを返す関数にできます。
function canUseService(user: User) {
return user.age >= 18;
}
呼び出し側は次のように読めます。
if (canUseService(user)) {
showServicePage();
}
英語の文のように読める名前は、条件式と相性がよいです。
Step 5: 避けたい名前を覚える
| 避けたい名前 | 理由 |
|---|---|
data | 何のデータか不明 |
flag | 何の条件か不明 |
handle | 何をするか不明 |
tmp | 一時的としか分からない |
manager | 責務が広くなりやすい |
一時的な短い範囲ならよい場合もありますが、広い範囲では具体名を優先します。
よくあるエラー
| 状況 | 原因 | 対応 |
|---|---|---|
| 名前が長すぎる | 1つの変数に情報を詰めすぎ | スコープを短くする |
| 関数名にandが入る | 複数責務を持っている | 関数分割を検討 |
| boolean名が読みにくい | 名詞だけで命名している | is / has / can を使う |
| 名前を変えたら動かない | 参照箇所を変え忘れた | IDEのリネーム機能を使う |
まとめ
命名改善は、最も手軽なリファクタリングです。曖昧な名前を、役割や条件が分かる名前へ変えるだけで、コードの理解コストが下がります。