同族嫌悪

他の人が書いたコードを見ると、どうしても馴染めない(ぶっちゃけ嫌い)なコードの書き方ってのがある。幾つか挙げると、

  • 参照(変数)の使いまわし
object obj = GetA();
if ( obj != null ) Aの処理
obj = GetB();
if ( obj != null ) Bの処理
obj = GetC();
if ( obj != null ) Cの処理
 :
 :
 :
obj = GetOther();

A,B,Cそれぞれが非nullであれば、それぞれが返ってくるのが自明だろうという考えなのだろうが、駄目だ。

  • パラメタ過剰
int result = GetResult(a, b, c, d, e, f, g, h, i, j, k);

これは言わずもがな。ただし、データを格納するだけの、イミュータブルなオブジェクトのコンストラクタだけはOK。そのようなクラスはアクセサ(プロパティ)を付加したくないから。

  • アンダースコア過剰
private object _jyugemujugemu_gokou_no_surikire_paipopaipo_no_churingen = 〜

変数名が長すぎるのが、アンダースコア過剰を誘うというのもあるのだろう。

しかし、過去に書いたコードを見直すと、最初の二つは自分でもやってしまっていることがあるから困ったもんだ。特に参照の使いまわしは、XMLのパースでアトリビュートを取得する処理で多用してたりする。