俺が見たクソコード

「#俺が見たクソコード選手権」というハッシュタグTwitterにあったが、これまで見た中でどうしても納得できないというか、あまりにもわかりやすすぎて「どうしてこうなった?」的なコードがいくつかある。

Z80で書かれたゲームで

ret z
ret nz

Rレジスタ関連で何かあるのかもしれない。

とある会社で見たC言語のコードで

int i;
for (i = 1; i <= 5; i++) {
  switch (i) {
    case 1: 
     .... /* 1番目の処理 */
     break;
    case 2: 
     .... /* 2番目の処理 */
     break;
    case 3: 
     .... /* 3番目の処理 */
     break;
    case 4: 
     .... /* 4番目の処理 */
     break;
    case 5: 
     .... /* 5番目の処理 */
     break;
    default: 
     break;
  }
}

1,2,3,4,5は実際にはそれぞれdefineでマクロ定義されていたけど、即値で書かれるよりも断然バグりそうで怖かった。