C#リーダブルコード #06_比較する時は変数を左_定数を右にする

当サイトではアフィリエイト広告を利用しています。

リーダブルコード
Subway Station in Munich, Germany. Train coming in. Strong Motion Blur on Train and People, no recognizable Persons.

今回は,値を比較する場合に,変化する値を左,変化しない値を右にするというお話です。次のようなコードの場合,①ではvalue<3となっていて,変化するvalueが左に来ています。脳みそにどのような順番で,何を覚えていくのがわかりやすいかという話ですが,②のように変化しない値「3」を最初に頭に入れても,あまり意味がないです。「value」のように,変化する値を頭にいれて,[valueの値はなにかな?」という状態にして,「3」と比較するほうが自然です。

//比較される値を左
private void 比較される値を左(int value)
{
    if (value < 3) //①
    {
        //GOOD:変化する値を左,固定値を右
    }

    if (3 > value) //②
    {
        //BAD:
    }
}

②のように「3」を頭にいれても,ただただ「3」なので,次の「value」を読んだときに,「valueが3より小さいか?」という問いかけのはずが,コードが「3>value」となっているため,頭の順序と逆になります。「3はvalueより大きいか?」という問いかけはちょっとおかしいですよね。「valueが3より小さいか?」という感じで,変化する値に対して,「この値はどうなのかな?」みたいな感じになるので,まず「調べたい値」が来て,次にチェックする閾値のような値がくるわけなので,「変化する値」が左で,変化しない値が右になるのが自然です。今回は固定値で「3」としていますが,変化しない値としては,constで宣言されている定数や,readonlyで宣言されている変数なども同じ扱いで,変化しないものは右と考えてください。