Togetterで先日まとめた「#俺が見たクソコード選手権 まとめ」についての話です。
そこそこ反響があったのですが、「書いてある中身がよくわからない」という反応もいくらかあったので、一部抜粋してちょっとだけ補足してみたいと思います。
なるべく書いた側の身になって考えてみたいと思います。
何かコメントで見当はずれなところがありましたらご指摘よろしくお願いします。私もいわゆるクソコードを書いてしまうことがよくあるので。
個人的にはこれが一番衝撃的だった。 きっと何かトラウマがあったんだと思う。 x = y; x = y; // 不安だからもう一回 #俺が見たクソコード選手権
— Norihisa Miyakawa (@m_nori) April 3, 2012
掃除機で同じ所を何度もかけるようなノリですね。過去に何があったんでしょうか。
一応、マルチスレッドの処理などを適当に書いてしまうと、代入した変数の値が適当なタイミングで勝手に書き変わってしまうことがあります。
もっとも、その場合でも変数にvolatile宣言をしておかないと最適化で取り除かれてしまいますが。
if (1 == 2) {…} これだわ・・・哲学やねんなもう・・・ #俺が見たクソコード選手権
— エンター (@enter4129) August 6, 2013
if(false){ printf("エラーです"); } そうですねエラーですね #俺が見たクソコード選手権
— EOF (@eofor0) August 6, 2013
絶対に実行されないコード。適当な変数が定数になったとき、機械的に置換していくとこういう記述が出てくるおそれがあります。
普通のコンパイラならWarning出してくれるような?