- 1 名前:デフォルトの名無しさん [2006/08/12(土) 01:56:11 ]
- 禁止ネタ(超既出)
・長い関数 ・深いネスト ・グローバル変数 ・goto ・memset ・malloc - free ・局所ブロック ・サンプルコードのtypo ・記述スタイル ・関数・変数名 過去スレ その4: pc8.2ch.net/test/read.cgi/tech/1153312202/ その3: pc8.2ch.net/test/read.cgi/tech/1149986051/ その2: pc8.2ch.net/test/read.cgi/tech/1142741989/ 初代 : pc8.2ch.net/test/read.cgi/tech/1141867015/
- 53 名前:デフォルトの名無しさん mailto:sage [2006/08/12(土) 23:17:31 ]
- 腹抱えて笑ってるだろうな無様さを
- 54 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 00:39:17 ]
- >>11
そういう趣旨だろ、>>10は。
- 55 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 00:41:55 ]
- >>48
それこそ、下手というより間違ってるな、だな。
- 56 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 01:07:45 ]
- >>45
つ *
- 57 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 01:12:57 ]
- いや、君の肛門さしだされても……
- 58 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 08:55:32 ]
- 僕の肛門も無限ループしそうです
- 59 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 09:05:58 ]
- printf(hogestring);
↑ こういうコードを見た時。脱力する
- 60 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 10:25:00 ]
- >>59
勝手に脱力してろ、アホ
- 61 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 10:39:19 ]
- 俺は脱毛した。
- 62 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 10:40:10 ]
- 数日前、auの端末でそれ系のバグがあって話題になってたね。
- 63 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 11:39:26 ]
- 単発コメントはゴミ以下。プログラム全体を奏でる壮大なシンフォニーであってほしい。
- 64 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 12:40:14 ]
- do_something(foo);
do_something(foo); // 何故か二回呼ばないと駄目
- 65 名前:デフォルトの名無しさん [2006/08/17(木) 16:41:55 ]
- int kesuna[4000];
↑このkesunaは何処からも参照されてないのに 消したら本当に実行時エラーが発生して噴いた。 そんなヘタなコード。(実話) 何でだ?
- 66 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 16:51:06 ]
- おそらく、ローカルに作った配列で範囲はみ出してスタック書きつぶしてるんだろ。
kesunaがあるとそこを書きつぶすので実害にならない。
- 67 名前:デフォルトの名無しさん [2006/08/17(木) 16:55:39 ]
- なるほど〜
- 68 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 16:59:31 ]
- 感心している場合じゃないぞw
こわいコードだな。
- 69 名前:デフォルトの名無しさん [2006/08/17(木) 17:01:38 ]
- >>65
それってあれだよね。 VCとかだったらデバッガモードでは動いてたけど リリースモードにしたら動かなくなったみたいなパターンだね。
- 70 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 17:44:27 BE:99846645-2BP(201)]
- 決まったタイミングで実行時エラーが出るなら、潰しやすいバグだと思うが。
- 71 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 17:55:42 ]
- 下手とバグは分けましょう。
- 72 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:33:28 ]
- retrun answer + 1; // なぜか1少ないので1足して戻す
- 73 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:35:45 ]
- // 100未満のときに、なぜか1少ないということがわかったので、そのときだけ1足して戻す
if (answer < 100) { return answer + 1; } else { return answer; }
- 74 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:37:23 ]
- // 100〜1000のときだけ、正しい値になることがわかったので、
// それ以外は1足してもどす if (answer >= 100 && answer <= 1000) { return answer; } else { return answer + 1; }
- 75 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:37:58 ]
- // テストの結果、10,000以上のときも・・・
泥縄
- 76 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:43:11 ]
- >>72
あるある。
- 77 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:44:55 ]
- // free(p); // ここでfreeすると何故だか落ちるのでコメントアウト
- 78 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 18:46:03 ]
- 「なぜか」「なぜだか」がキーワードですなw
- 79 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 21:38:38 ]
- >>72-78
>>71
- 80 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 21:51:07 ]
- いや、バグ対処の仕方が激しく間違ってるんだろ。
- 81 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 22:29:37 ]
- ヘタなデバッグのやり方を披露するスレじゃないだろ。
- 82 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 22:31:16 ]
- ネタ切れなんだから、なんでもいいじゃn
- 83 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 23:45:29 ]
- 普通に考えたら、上手に書けてんのにバグってるなんて珍妙な事態は無いはずだしなー。
そう思うと結構難しいな、このスレ。
- 84 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 23:56:27 BE:209677076-2BP(201)]
- ネットでちょっと探したら、ゴロゴロころがってるけど。 > へたなコード
- 85 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 23:59:08 ]
- じゃ見つけて貼ってくれよ
- 86 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 23:59:35 BE:124808055-2BP(201)]
- こんなのとか。
www.tcp-ip.or.jp/~ikken/cpp/txt/r10.C.txt >/* [参考] 推奨する方法 >class Foo { > int i ; >... > const int& get2() { return i ; } リタ−ンで返す場合
- 87 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:02:45 ]
- >>86
どこがどう下手なのか書きましょう。
- 88 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:04:44 BE:89862236-2BP(201)]
- >>87
ぱっとみて分かるようになりましょう。
- 89 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:06:07 ]
- >>86
最初につっこむのはむしろここじゃね? >#include<iostream.h> >.... >void main()
- 90 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:07:29 ]
- >>86
つか、そのサイト、古いしむちゃくちゃなので、いまさら感がある
- 91 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:08:08 ]
- 関係ないが/* */うぜー
- 92 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:15:25 ]
- >>88
ぱっとみても分かりません。説明してください。
- 93 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:26:30 ]
- 突込みどころがいろいろあるだけに、まずどこに対して突っ込むのが正解かわからないな。
- 94 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:28:38 ]
- intの参照を返すって辺りか
- 95 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:34:53 ]
- constの参照返しといて自分がconst関数じゃないあたりとかもか
- 96 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:47:05 BE:89862236-2BP(201)]
- >>94
あと、クラス内部への参照を外に渡してるってのも。
- 97 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:52:25 ]
- >クラス内部への参照を外に渡してる
いつでも許される類のもんじゃ無いにせよ、それ自体は別に有りだろ。 一応const憑いてるしな。
- 98 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 03:39:11 ]
- このサイト、1999年だか2000年だかに作られた古いページだから。
当時このページ見つけたとき、その時でもなんじゃこりゃ感はあったw 内容が書き換わってるのか書き換わってないのか知らないけど、 一番の「下手」は、作成日時と更新日時を各ページに載せてないとこだな。
- 99 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 03:46:13 ]
- 思ってたより新しいな。
- 100 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 10:19:15 BE:49923825-2BP(201)]
- 〉97
いや、ほとんどの場合、無しだろ。 const付きでも。
- 101 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 10:29:11 ]
- >>100
ほとんどの場合ということは、例外もあるということですよね。 どのような例外ケースがあるのでしょうか?
- 102 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 10:43:55 ]
- 古いサイトは古いままのが多いよな
- 103 名前:デフォルトの名無しさん [2006/08/18(金) 14:18:43 ]
- 昔のサイトは古いよな〜
びっくりだぜ それに比べて最近のは先進的だね。 サイコー
- 104 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 21:10:12 BE:279569287-2BP(201)]
- www.nmn.jp/~hidai/c/#s3
これなんか10年も前だな。
- 105 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 21:43:45 ]
- >>104
どこがどう下手なのか書きましょう。
- 106 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 21:49:06 ]
- 誰も下手だとは言ってないだろ。
- 107 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 21:51:33 ]
- >>106
リンク先読むとこだったじゃないか、ボケ
- 108 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 22:22:24 BE:199692858-2BP(201)]
- next1.cc.it-hiroshima.ac.jp/c/introC.htm
サンプルのインデントがメチャクチャ。 なんでかなと思ってソースを見てみたら、wordで出力したhtmlだった。
- 109 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 22:32:22 ]
- どんどん下手なコードから遠ざかっていくなぁ
- 110 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 22:39:55 ]
- 宗教論争は盛り上がるんだけど
非難一辺倒なコードはヘタ以前に 致命的な間違い犯してる場合が殆どやしねえ。
- 111 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 22:41:19 BE:314515679-2BP(201)]
- じゃ、109が酒の肴になるようなヘタなコードを披露するってことで。
- 112 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 22:42:14 ]
- いや俺酒飲まないし
- 113 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 22:50:06 ]
- 昔書いたソース見てくるよ。
- 114 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 23:09:10 ]
- //test = hoge1(hage〜moge);
//test = hoge2(moge〜hage); test = hoge3(hage〜hage); //test = hoge4(moge〜moge); コメントアウトが残ってる事自体は別として 何が悪くて何がしたくて何が良くてhoge3を残したのか hoge1~4の先を全部読むまで全くわからんし そうじゃなくても可読性低下させるだけの古い 糞コードを糞しつこく糞こびり付かせてると吐き気がする。 しかも古いコードはコメントアウトして残しておくようにとか指示する糞野郎の下だと 糞がぼとぼと降り注ぐ中で自分も糞を生産するという地獄絵図だよな
- 115 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 23:27:35 ]
- 古いコード・・歳を取ってしまった自分
残しておけ・・俺を捨てないでくれ というメタファーに気がつけ。 まぁそれはともかく。 マジックナンバー満載の素敵コードのおかげで 徹夜のデバッグを余儀なくされると殺意沸くよね。 ヘタとか以前に死ねと思うコード。
- 116 名前:113 mailto:sage [2006/08/18(金) 23:33:19 ]
- さらーっと眺めてきた。
下手は下手だけど、思ったほど酷くない気がした。もっと下手なのみたことあるし。 いろんな文字列定数がハードコーディングされてて、後から弄りづらそう(VB)。 「エラー '55' 対策」 とかコメント書いてるけど、何のエラーなのか分からん(VB)。 まるっきり手続き型言語みたいな書きかた(VB)。 ほとんどグローバル変数(Perl)。 探せばライブラリがいくらでもありそうなのを、頑張って車輪の再開発してる(Perl)。 GUIの処理が随分奥深いとこまで食い込んでる(Delphi)。 ビットフィールドの解析を配列読み込んで1byteずつしこしこ処理してる(Delphi)。 一行に纏めすぎ。if pbuf = nil then begin BlockRead(fh, buf, 512, AmtTransferred); pbuf := @buf; end; 200行くらいの、ほとんど同じ処理の関数が3つもある(計画性なく拡張したせいなのだが)。
- 117 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 00:15:48 ]
- >>115
殺人コードだな
- 118 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 21:55:00 ]
- 某スレで汚いといわれたんで修正したんですが、まだ自身がないのでみてください。
ttp://up2.viploader.net/mini/src/viploader62689.zip
- 119 名前:デフォルトの名無しさん [2006/08/21(月) 22:22:01 ]
- 過疎板で回転の速いうpろだにあげちゃだめって何度も言ったのに…。
- 120 名前:デフォルトの名無しさん [2006/08/21(月) 22:28:41 ]
- >>118
気になったところ。 using namespace std; <-思わぬところで衝突するかも if文 <-必ず括弧を付けよう fin.close(); <-勝手にやってくれるから書くだけ無駄
- 121 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 22:40:40 ]
- >>118
クラス名や変数名を見ても目的がわかりづらい。aとかbとか使うな。 何も書かれていないmain.hやgetメソッドの存在意義がわからん。 ヘッダが無いと動かないってわけでもないし set書いたらgetも書かなきゃいけないというわけでもない。
- 122 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 23:12:53 BE:19969722-2BP(201)]
- >>118
>if(b) > b = 0; >else > b = 1; boolにはtrueとfalseを入れればいいじゃん。 値の反転はこうで。 b = !b;
- 123 名前:デフォルトの名無しさん [2006/08/22(火) 00:30:27 ]
- >>118
重要なのにコメント化
- 124 名前:デフォルトの名無しさん [2006/08/22(火) 00:32:04 ]
- > bool b(0);
boolにもコンストラクタってあったの? 知らなかった... いつも bool b = false; と書いてました。
- 125 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 00:58:35 ]
- bool(0)は関数形式のキャスト演算子では?
- 126 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 01:18:13 ]
- >>124
C++では、そのように組み込み型のオブジェクトもコンストラクタ引数を指定するのと同じ構文で初期化できる。
- 127 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 01:23:30 ]
- 見たことないの関数やらクラスがあるが必要もなさそう
C言語の関数?それとも昔の表記方法?wは全部不要じゃん? wstring wifstream wcout imbue locale
- 128 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 01:24:05 ]
- locale("japanese")よりlocale("")の方が良いと思う。
あと0x0D, 0x0Aではなく'\r', '\n'にしろ。(それでは良くない環境ならせめて'\x0a', '\x0d')
- 129 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 01:25:42 ]
- ここで指摘の多い様な、ぱっと見の下手なコードって
C++に集中してる気がするのは気のせいか? 適当に書いても適当に通っちまったり、オペレーターオーバーロードとかで 出鱈目やってもコンパイラ的には全然OKだったり、無法がまかり通るからなのかな…
- 130 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 01:48:28 ]
- Hoge::Hoge()
{ this->isFuga = true; } よりも Hoge:Hoge() : this->isFuga(true) { } が望ましい。
- 131 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 02:02:27 ]
- なんで?プリミティブななんとかが関係有る?
- 132 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 02:05:00 ]
- それ以前に何故にthisを明記するか。
voidは省略してやがる癖に。
- 133 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 02:07:57 ]
- >>131
コンストラクタ本体での設定は、初期化じゃなくて代入になる。 constメンバとか、参照メンバはこの方法じゃないと初期化できない。
- 134 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 02:14:04 ]
- >>133
まあ、普通に常識ではあるよな。 正直なところ基本型についてはどっちでやってもええやんとは思うが。 二重コンストラクタとか用意した方が取り回しの便利なクラスとかだと、 わざわざ無駄になる初期化部分を書くのが面倒ちい。 class Hage { int hige; public: Hage() { init(); } void init() { hage = 0; } }; とか。
- 135 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 05:08:27 ]
- >>129
コードがキレイかどうかを気にするのがC++プログラマに多いからじゃね?
- 136 名前:118 mailto:sage [2006/08/22(火) 08:53:29 ]
- >>120
わかりました、そうします。 >>121 まだちょっと実装不足です。 >>122 それがありました・・・orz >>123 あれは実験コードで・・・今のもだけど >>125 できるらしいです、Effective c++より >>127 stringをマルチバイトでgetコマンドすると一バイトずつ読みバケるんで、 自分で処理するのにも自信ないのでc++のマルチバイト処理関数使ってます。 ちゃんと解説してる本やサイトなくてつらかった・・・ >>128 そういう方法で処理します。(enumハックでするとどうなるんだろう) 次にテンプレート化して提出します。え、そういうスレじゃない?
- 137 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 11:30:10 ]
- Effective C++なんて読むレベルの奴がこんな指摘されるはず無いのだが
- 138 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 14:24:07 ]
- うーん、いや実際に読んでるよ。読むだけ
- 139 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 01:36:00 ]
- MoreEffectiveもデザパタも読んでモヒカン入門した俺の頭のテカリ具合を見てくれ。
こいつをどう思う?
- 140 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 02:36:46 ]
- すごく…氏ね…
- 141 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 07:19:15 ]
- TYPOしたままやけくそで全部そのままTYPO名使ってるコード。
つーか置換しろよ…
- 142 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 08:54:23 ]
- 検索する時困るんだよな。
確か stopFlag だったよなーと思って探しても見つからず途方にくれる。 実は stopFlug でした、とか。そりゃみつからねーや。
- 143 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 10:49:14 ]
- 普通は見つからなかったらtypoだと思い"stop"で検索かける。
- 144 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 13:12:29 ]
- stapFlugだったりとか。
ちょっと長めの名前だと、補完使ったりコピペするので、 TYPOにしばらく気づかないことが多いな。
- 145 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 13:23:18 ]
- 気付いたときには手遅れだったり。
- 146 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 13:25:49 ]
- typoはtypeのtypoだ、とまことしやかに説明している人がいた。
- 147 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 13:34:16 ]
- これまたリカーシブですね
- 148 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 20:46:08 ]
- 一応クラスでは作り終わった?評価よろしくお願いいたします
ttp://maidx.net/public_html/url.cgi?url=web.maidx.net/up/maru_077.zip&a=0
- 149 名前:デフォルトの名無しさん [2006/08/23(水) 20:46:52 ]
- typoってどーゆーいみ?
- 150 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 20:52:07 BE:59908526-2BP(201)]
- 昔fj見てたとき、なんでふつーに日本語で書かないんだろって思ってたよ > typo
- 151 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 21:15:11 ]
- typographical error
- 152 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 21:17:06 ]
- >>148
・識別子が全部小文字で非常に見づらい。 単語の区切りが明確になるようにアンダーバーを入れれ。 ローカル変数も然り。 ・getdateinputinfってのが何なのかさっぱりわからんけど適切な命名ではないと思う。 ・getstreamopenでなくてis_stream_open。 名前だけ見ると別の意味になる。 ・コメントがなさすぎ。命名の微妙さとあいまって何をやってるコードなのかさっぱりわからん。
- 153 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 21:28:33 ]
- >>148
Error #503 Service Unavailable BoostWeb BW4.2.16.1 Feb 24 2003 at bw03
|

|