はじめに
レビュー文化が根付いていない開発現場にて引き継ぎ、開発を行うことになりました!
キャッチアップしていく中で一番キツく感じたことが、命名が重要視されておらず、コードを辿って「コレはなにをしているんだ?」というのを調べる時間が長かったことです。
また、開発者自身も命名により混乱しているように見受けられ、苦労している様子でしたので改めてこの記事を作ることにしました。
ターゲット
- 後から自分のコードを読むのが辛い人
- 集団開発を行ったことのない人
- まだリーダブルコードを読んでいない人
命名規則の重要性
1. 可読性の向上
同じ命名ルールで統一されていると、コードを読んだ瞬間に「これは変数」「これはクラス」「これは関数」と識別できます。
→ 学習コストが下がる、レビュー・修正がしやすくなります。
2. 保守性の向上
命名の一貫性があると、将来的な変更(検索・置換、仕様変更)が安全・容易になります。
3. 衝突や混乱の防止
名前の意味を明確にしておくことで、変数や関数が重複したり、意図と異なる用途で使われたりするのを防ぎます。
4. チーム内の共通理解
特に複数人開発では、命名ルールを共有することで「誰が書いても同じように見える」コードを実現できます。
→ 意図や役割の理解がしやすく、可読性が向上します。
実際の改善例
あくまで改善例ですので、これが正解☀️というわけではないですが前後で読みやすさに違いが出てくると思います!
ユーザー名の変数
☁️ Ummm...
$a = 'pome';
$usern = 'manatee';
😕: 何を表しているかがわかりにくい...
☀️ Good
$userName = 'pome';
😄: 一目で使用用途がわかる!
ユーザー名を取得する関数
☁️ Ummm...
$userName = getData();
$userName = userName();
😕: 関数内で何をしているんだろう...
☀️ Good
$userName = getUserData();
😄: 動詞 + 名詞の形になっているので何をするのかわかりやすい!
バリデーションを行う関数
☁️ Ummm...
if (check($userName)) {
// ...
}
😕: checkした後に何が返却されるのだろう...
😕: これだけでは渡された値を全て大文字にして返したりすることもあり得てしまいそう
☀️ Good
if (isValidUserName($userName)) {
// ...
}
😄: is / has / canをつけると
・真偽値を返す関数だと直感的に分かる
・userNameに対する バリデーション処理 であることが明確
関数名から挙動が推測しやすい!
※関数名に限らず、変数名も同様に扱うと良いです。($isActive=true など)
定数
一度値を設定したら変更できない値のことです。
APIキー、固定URLなど ずっと変わらない値 を扱うときに使用します。
☁️ Ummm...
$max_size = 100;
😕: 他の変数と間違えて上書きしちゃうかも
☀️ Good
const MAX_SIZE = 100;
😄: 一目で特別な値とわかる!
※多くの言語で慣習として使われているので定数を違和感なく理解できます。
変数の書き方が統一されていない
☁️ Ummm...
$userData = getUserData();
$user_name = userData->name;
$userData_id = userData->id;
😕: キャメルケースとスネークケースが混ざっている
😕: どの変数を使えばいいのか迷いやすく、後でイージーミスが発生する可能性が高い...
☀️ Good
$userData = getUserData();
$userName = userData->name;
$userId = userData->id;
😄: すべてキャメルケースに統一
😄: 変数の役割が名前からすぐ分かる!
おわりに
ここまでのポイントをしっかりカバーできるだけでも統一感のあるコードを書けるようになるかと思います!
何をするにもまずは第一歩からがんばりましょ〜!