命名規則のきほんの「き」
はじめに
プログラミングをしていく上で、命名規則はとても重要です。
例題を紹介しながらアウトプットします。
命名規則が重要な理由
命名規則をしっかり行うことで得られる主なメリットは以下になります。
可読性の向上
一貫した命名規則を使用することで、コードが読みやすくなります。他の開発者や自分自身が後からコードを見たときに、変数や関数が何を意味しているのかがすぐにわかります。
また、ソースが膨大になり、命名規則がしっかりしていないと、内部の処理をしっかり見る必要があるため、読み手の負荷が大きくなってしまいます。
メンテナンス性の向上
一貫性のある命名規則は、コードの変更や修正が容易にします。新しい開発者がプロジェクトに参加した場合でも、命名規則に従うことで理解しやすくなり、バグの減少に繋がります。
コードの再利用性
同じ命名規則を使用することで、異なるプロジェクトやモジュール間でのコードの再利用が容易になります。同様の目的の関数やクラスが一貫した名前を持つため、再利用しやすくなります。
種類別の命名パターン
命名のパターンについては、基本的に以下のように考えると良いです。
名前の種類 | 命名パターン |
---|---|
変数名、プロパティ | (形容詞+)名詞 |
関数名、メソッド | 動詞(+形容詞+名詞) |
クラス名 | (形容詞+)名詞 |
例題
ここからは、実際にNG例と、OK例のコードを書いていきます。
言語はJavaScriptで書いていきます。
変数名
まずは変数名における命名の例です。
例1: boolean型を格納する変数
NG例
const string = typeof "taro" === "string";
OK例
true or falseを格納する変数は先頭に「is」を付けることが多いです。
const isString = typeof "taro" === "string";
例2: 数値を格納する変数
NG例
const a = 5;
OK例
変数名には意味のある名前をつけましょう。例えば、年齢を表す変数の場合:
const age = 25;
関数名
次に、関数名の命名について見ていきます。関数名は「動詞(+形容詞+名詞)」で表現するのが一般的です。
例1: 文字列が空かどうかを確認する関数
NG例
function check() {
// 何をチェックするのかが不明確
return input === "";
}
OK例
何をする関数なのかを明確にするため、名前に動詞を使用します。
function isEmpty(input) {
return input === "";
}
例2: リストから特定の要素を削除する関数
NG例
function remove() {
// 何を削除するのかが不明確
}
OK例
function removeItemFromList(list, item) {
return list.filter(i => i !== item);
}
クラス名
クラス名は「(形容詞+)名詞」で表現されるのが一般的です。
例1: ユーザーを表すクラス
NG例
class u {
constructor(name) {
this.name = name;
}
}
OK例
クラス名には、クラスが何を表しているのかを明確に示す名詞を使います。
class User {
constructor(name) {
this.name = name;
}
}
例2: 図形を表すクラス
NG例
class s {
constructor(width, height) {
this.width = width;
this.height = height;
}
}
OK例
class Shape {
constructor(width, height) {
this.width = width;
this.height = height;
}
}
まとめ
適切な命名規則を守ることで、コードの可読性、メンテナンス性、再利用性が大幅に向上します。特に大規模なプロジェクトやチームでの開発では、命名規則の統一が重要です。
この記事で紹介した命名パターンを参考にして、より良いコードを書けるようにしましょう。
Discussion