1. まとめトップ

反面教師になる?このソースコード書いた奴出て来い(怒)なサイトがおもしろい

クソッタレなソースコードを憎んで人を憎まずがモットーのこんなソースコードはいかんでしょなサイトがおもしろいです。開発中は気づいていなくても開発完了後に改めて自分が書いたコードを確認すると「なんじゃこれ」という人は多いと思います。そんな「なんじゃこれ」を集めたのがウンコード・マニア!

更新日: 2013年11月11日

1 お気に入り 3370 view
お気に入り追加

この記事は私がまとめました

■ウンコード・マニアとは?

ウンコード・マニアは、プログラマのためのストレス解消サイトであり教育サイトです。 主に他の人が創作したウンコードを鑑賞するのが目的です。

ウンコードとは、糞のようにヒドいプログラムのソースコードことです。糞コード、クソースなどとも呼ばれます。

ヒドいソースコードは、プログラマの健康を脅かします。 「ウンコードなんて今すぐ消してしまえばいい。」 と言いたくなりますが、既存のヒドいソースコードを前提にしたシステム運用が、利益を生んでるケースも多いことでしょう。 結局、ヒドいプログラムのソースコードをなんとか誤魔化しながら整合性を取り続けるべくメンテナンスしているという不幸な人も多いはずです。

ヒドいソースコードを書いてしまうプログラマが、このサイトでウンコードの害を認識して、 もっとソースコードに気を使うようになって、引き継ぎをした人も健康でいられますように。なむなむ

皆さんもこんな経験あると思います。誰かから引き継いだ後にコードを改修する事になって該当箇所を見たときの絶望感・・・・。その絶望感を今一度思い出して如何に糞コードが害悪なのか同じような被害を被った人々と傷の舐めあいをしましょう(笑

■ウンコード公式サイト

■こんなコードが世の中に出回ってると思うと我慢できない(言語別)

Java

もはや人間が読むものではない。

その昔、「連番やめましょうよ」と提案したところ、「カンニングペーパーをモニタに貼っとけば、何のクラスかすぐわかるでしょ?」と言われて、早く脱出することを決意したことがあります。

package com.renban.erq053.czp008;

/**
* ZWQI001 クラス
*/
public class ZWQI001 {
/**
* m_F001
*/
private String m_F001 = "";

/**
* コンストラクタ
*/
public ZWQI001() {
}

/**
* m_F001 を返却します。
*/
public String get_m_F001() {
return m_F001;
}

意味不明。カンニングペーパーなくしたらどうするつもりなんだ?
しかもローマ字読みのところもありかなりダサイ

C++

結合試験2日前に脱退したうんkプログラマーの後を引き継いで、テストしてたらどんなテストしても全部正常終了する!!
けど良く見たら、そいつが作った全ての自前関数のreturn値がががががががが

return 0;

私もこの被害を受けたことがあります。書いた奴滅亡しろ滅亡しろ

配列変数を全く理解できていなかった。

var rnd = Math.floor(Math.random() * 128) ;
var str = "" ;
switch(rnd){
case 0 :
str = "hoge" ;
break ;
case 1 :
str = "foo" ;
break ;
case 2 :

... //えんえんとcase文が続く

case 128 :
str = "bar" ;
break ;
}

つーかよくcase129個も書いたなーと逆に尊敬しそうw

C

10年位前、炎上しているプロジェクトの支援に入って最初に見たコードです。
こんなコードが大量に存在し、1年近く燃え続けました。

void funcX() {
int a;
a = funcB();

if( a = 0 ) {
funcA();
} else {
funcA();
}
}

ifで代入だと・・・これifの意味ないじゃん。しかもelseで同じ関数呼んでるし・・・
何の為の分岐か説明しろおおおおおお

PHP

2012/02/31とか、古代から培ってきた太陽暦を蔑ろにするコード。神かお前は。

if(mb_strlen($m) == 1){
$m = '0'.$m;
}
$start_ymd = $y.'-'.$m.'-01';
$end_ymd = $y.'-'.$m.'-31';

全ての月は31日の扱いのようです

Ruby

rescue した例外のメッセージを読んでさえいれば、発見は早かったハズ。

id = 100
price = get_price(id)
namae = get_name(id)


begin

# 関数 foo は、開発中のためまだ動作が不安定。
# 引数を正しく与えても例外を raise する可能性アリ!!注意!!
foo(id, price, name)

rescue
puts '処理に失敗しました'
end

インタプリタだから気付かないのかな?

C#

デザイナコードにオリジナルのコードを埋めると、デザイナを触った瞬間にきえてしまうんだ。 わかっててコメントを入れている人もいるけど、コメントも消失してしまうから、気づかなかったらアウトだよね。

#region Windows フォーム デザイナーで生成されたコード

/// <summary>
/// デザイナー サポートに必要なメソッドです。このメソッドの内容を
/// コード エディターで変更しないでください。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "Form1";

//これは意図的にここに入れたメソッドなので、デザイナをいじったら元に戻すこと!
this.InitializeData();

//...
}

自動生成されるコードを編集するのはやめようよ・・・

■その他みなさんの嘆きをどうぞ

なお、ウンコードを削除して今日も100行ダイエットんごwwwwwwwww綺麗だわ。素晴らしい!

1 2