変数や関数のネーミングには気をつけよう


Qiita初投稿です。よろしくお願いします!

ネーミング

最近 Robert Martin の 「Clean Code」 を読み返していてネーミングの重要性を実感したのでまとめました。プログラマーなら一度はネーミングで迷ったことがあるのではないでしょうか。要は変数や関数に名前をつけてあげることですね。一見簡単そうに見えて意外とネーミングで苦戦した人も少なくはないはずです。

名前の短縮は避けよう

コード量を減らすために変数や関数の名前を短縮しがちですがあまりオススメしません。実際にコードを見てみましょう。

$d = date('Y-m-d');

このように変数を短縮してしまうことにより変数名はなんの情報も与えてくれなくなってしまいます。いざこの変数を使おうという時にはコードを読み返さないといけないはめになり、コード量が増えれば増えるほどそれは困難でありバグを生みかねません。

$sub_cnt = 10;

こういった短縮の仕方もオススメできません。まずsubは色々な意味が考えられます。「副〇〇」という意味でもあるしSubscriberの略とも考えられます。またcntもおそらくcountというのは想像がつきますがコードを読んでる相手に誤まって理解されないように略さず書き出しましょう。

$subscriber_count = 10;

このようにすれば誰が読んでもサブスクライバー数が10人いるというのが一目でわかります。

関数名は目的をハッキリさせよう

関数名はその関数が何をするのかわかるようにハッキリさせましょう。また、関数の内容も関数名以外のことはしないように気をつけましょう。

function getAll()
{
    // コード...

    if ($success) {
        $this->status = 1;
    }

    return $subscribers;
}

まず関数名のみでは目的がハッキリしません。この関数で何が取得できるのか中身をみないと判断できません。では中身をみてみましょう。何かの処理をした後にステータスの変更を行ってます。これでは中身を知らずにこの関数を使ってしまった場合知らない間にステータスの変更までかかてしまい、バグを生む可能性が出てきます。

function getAllSubscribers()
{
    // コード...

    return $subscribers;
}

関数名を見ればこの関数が全てのサブスクライバーを取得してくれるのがわかります。また、余計な処理も一切されないので安心です。

まとめ

自分の書いたコードは自分だけが読むとは限りません。チームで開発する場合他のメンバーがそのコードを編集することは少なくありません。その時に自分のコードが読みずらいとチームメンバーの作業効率を下げかねません。コードを書く時は「他人が読む」という風に意識して書きましょう。(第2弾へ続く)