導入
プログラミングにおいて、関数名はコードの「説明書」です。熟練のエンジニアほど、関数名を見ただけで「何が起きるか」「どんな副作用があるか」を瞬時に理解します。しかし、似たような意味を持つ英単語(例:deleteとremove、createとmake)を無意識に選んでしまうと、コードの意図が曖昧になり、バグの温床や保守性の低下を招きます。本稿では、PHP開発の現場で迷いがちな動詞のニュアンスを整理し、コードの可読性を高める命名戦略を解説します。
基礎知識
PHPを含む多くのプログラミング言語では、「動詞+目的語」の形式(例:`updateUserStatus()`)で命名するのが一般的です。ここで重要なのは、単語の直訳ではなく、その単語が持つ「プログラミング的な慣習」を理解することです。例えば、`remove`は「リストから取り除く(戻せる可能性がある)」、`delete`は「物理的に消去する(戻せない)」というニュアンスの違いがあり、これを使い分けるだけでコードの安全性に対する意識が周囲に伝わります。
実装/解決策
命名に迷った際は、以下の分類基準を参考にしてください。
1. データの削除(Destroy/Delete/Remove/Clear)
- delete: データベースのレコードなど、完全に消去する場合。
- remove: 配列などのコレクションから要素を外す場合。
- clear: オブジェクトやバッファの中身を空にする(器は残る)。
2. 値のセット(Set/Add/Put/Insert)
- set: プロパティへの代入。
- add: 配列への追加や数値の加算。
- insert: 特定の順序やインデックスを意識した挿入。
3. 状態や型の確認(is/has/exists)
- is…: 状態の確認(`isEmpty()`, `isValid()`)。戻り値はbool型。
- has…: 所持しているか(`hasPermission()`, `hasAttribute()`)。
サンプルプログラム
以下は、これらの命名規則を意識した実用的なクラスの例です。コメントで各関数の意図を明確にしています。
/
public function put(string $key, mixed $value): void
{
$this->data[$key] = $value;
}
/
- 特定のデータが存在するか確認する
/
public function has(string $key): bool
{
return isset($this->data[$key]);
}
/
- データを完全に取り除く
/
public function remove(string $key): void
{
unset($this->data[$key]);
}
/
- 全てのセッションデータを破棄(空にする)
/
public function clear(): void
{
$this->data = [];
}
/
- 状態が正しいか検証する
/
public function isValid(): bool
{
return !empty($this->data);
}
}
// 実行例
$manager = new UserSessionManager();
$manager->put(‘user_id’, 123);
if ($manager->has(‘user_id’)) {
echo “データが存在します。”;
}
?>
応用・注意点
現場での命名で陥りやすい失敗は「過度な省略」と「曖昧な語彙」です。
- 一貫性を優先する: プロジェクト内で「削除」を`delete`にするか`remove`にするか、チーム内で辞書(用語集)を共有しておくことが、数千行のコードを読み解く際の鍵となります。
- try / attemptの使い分け: `try`は例外処理を前提とした試行に、`attempt`はログインのような「失敗する可能性が高い(パスワード間違いなど)」処理に対して使うと、コードの意図がより明確になります。
綺麗なコードは、正しい単語選びから始まります。次にコードを書くとき、一呼吸置いて「この単語は、この処理の責任を正しく表現しているか?」と自問自答してみてください。