入社当初、定数と比較するときは右側に変数を書きなさいとか、リプレース案件で型名が接頭辞に付いていたりしていました。以下のようなコードですね。
//型名を接頭辞に付ける
string strName = "legacy";
//比較演算子の右側に変数を記載する
if ( "legacy" == strName)
{
//省略
}
これらに名前があることを学びましたので、記事にしてみました。
yoda記法
概要
比較時に定数を左側に書く手法です。
if ( "legacy" == strName)
名前はスターウォーズの「ヨーダ」の話し方からきているらしいです。
見たことないですけど、逆説的なしゃべり方をするとか…
長所
代入ミスの防止で、以下みたいいに==を=と1つで記載した場合の誤動作を防ぐ目的です。
//これは代入になりエラーや警告になる
if (strName = "legacy")
//左辺が定数なら誤って代入してもコンパイルエラー
if ("legacy" == strName)
短所
可読性が悪くなります、慣れればOKなのかもですが。現代のIDEでは、if文内で=と書くとエラーや警告が出るので、安全策としては不要な場合が多いです。
ハンガリアン記法
概要
変数の先頭に、型や用途を示す接頭辞を付ける手法です。
string strName = "legacy";
調べてみると、以下もハンガリアン記法の一部らしいです。
//整数を示したり、真偽値を示したり
int iCount = 0;
bool bFlag = true;
長所
型や用途が名前から一目で分かります。また、古いWindows APIコードでも存在するようです。
短所
コードが長くなりがちなのと、型変更に弱いです(例えば、intをfloatに変える場面とか)
所感
yoda記法よりも可読性悪くはならない感じがしますが、varのような型類推などの記載方法を踏まえると、時代に即してはないのかなと感じます。また、変数をみて型を覚えておかないといけないほど、スコープの長くなるコードを避ける方針で組立していきたいですね。
コラム
以下は、新人教育で学んだけど場面によるよねと思うものたちです。数年後に認識変わるかもですが、現時点での視点です。
2026.01.24、追記
少し分かりづらい書き方しました。
会社では以下で習いましたが、場面によるよねってものたちです。
→自分は違うんじゃないの?て思ってる教えですね。
三項演算子を使うのはやめましょう
これは可読性が悪くなると聞きますが、観点を変えれば読みやすいと感じます。if文を使うと分岐が出来ますが、どちらの分岐でも同じ変数に値を入れるのであれば、それは三項演算子で表現した方が、分岐しても変化や代入される値として明示していると捉えます。if文の分岐内で複数行あり、異なる処理がある場合は別に感じます。新人などへは説明が少し曖昧なりそうなので要注意ですね。
returnは1か所にしましょう
これも観点を変えることで可読性が増すと考えています。よくあるコードでは、関数の先頭に引数チェックでreturnする文章などで、returnしますが、returnを1か所にすると、メインロジックを飛ばすためにif文を書いて、最後にreturnするだけのスコープが長いコードになります。それ以外でreturnが複数ある場合は、そもそも関数の作りがイマイチと捉える可能性がありそうですね。
さいごに
開発環境の利便性が増すと同時に、先人の工夫が失われてしまうのは複雑な気持ちですが、自然言語に近い可読性の高いコーディングができるのは嬉しく思います。一方で、リプレース案件や過去案件で見かけることが多いコードだと感じますので、背景を踏まえた上で読むことができれば、コードに含まれている意図も掴めて、理解が深まりそうですね。