あなたのまわりの糞コード
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG(身元がばれない程度に)
0002デフォルトの名無しさん
NGNGfor( int i=0; i<=16; i++){
a[i]=.......
}
デバッグさせられる方の身にもなってみろ……
0003デフォルトの名無しさん
NGNGまぁ、そもそも即値なのがまずいのかもしれないけど、
ローカルだったら許せなくも無いレベルかなぁ。すぐ気づくでしょ。
境界関係はデバッグ時の優先チェック項目だよね。
0004デフォルトの名無しさん
NGNG#define array_sizeof( array ) ( sizeof( (array) ) / sizeof( (array[0]) ) )
を使うとか。
00053
NGNGうん、私はそういう感じにしてます。
でも2の場合の直接の問題は < と <= だからねぇ。
0006デフォルトの名無しさん
NGNGリークしてないのにリークと報告するような事もあるけど、
メモリアクセス上のバグを沢山自動検出してくれるのはありがた
いっすよ。
0007デフォルトの名無しさん
NGNGちなみにJavaなら、実行した瞬間にRuntime例外が飛んでくれて、
スタックのトレースはいてくれるので、楽チン。
0008C#
NGNG0009Perl
NGNG0010Pascal
NGNGってやるから、すぐ気づくんだよなぁ。
0011Pascal
NGNGfor i := Low(a) to High(a) do begin
a[i] := ...
end;
0012あはは、
NGNG歌っちゃったりなんかしてぇ〜・・・
0013デフォルトの名無しさん
NGNGマクロ定義じゃウザクなるだけだし・・・
0014デフォルトの名無しさん
NGNG32bitではVisualC++やBCC55、GCCとかかな。
16bit処理系で無い?
0015デフォルトの名無しさん
NGNG0016ボログラマー
NGNG{
case 'A':
case 'B':
case 'C':
case 'D':
switch( n )
{
case 'A':
case 'B':
case 'C':
case 'D':
......
break;
}
break;
}
無駄に2重switch。
・・・いや、だから何がしたかったんだ?
0017デフォルトの名無しさん
NGNGfreeしてmallocしないコード
0018デフォルトの名無しさん
NGNGmallocを知らなくて何でもかんでもstaticに取るコード
0019みんな経験あるでしょ
NGNG0020デフォルトの名無しさん
NGNGう、耳が痛い。
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNGずらずら書き連ねた関数の宣言。客先で倒れるかと思った。
作ったのは下請けの新人らしい。
0024デフォルトの名無しさん
NGNGfor (;_;) {
...
0025デフォルトの名無しさん
NGNG山のように載ってるな。
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG面白かった。ありがとう。
LISP is a dream language for the writer of unmaintainable code.
てのがワラタ
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGえ?だめなの?
int i, val[100], *p;
p = val;
for( i = 0; i < 100; i++, p++)
*p = 0;
とかやんない?
この場合はインデックス使った方が良いけどさ。
0032デフォルトの名無しさん
NGNG>>29のは、しょうもない無意味なコメントを書くなってことだろ
0033デフォルトの名無しさん
NGNGおばか?
あんたもしかしてこんなコードかくでしょ
#include <stdio.h> /* stdio.h を include */
main() /* main関数 */
{
int i = 0; /* int 型 i を宣言、値を 0 にする */
for(i = 0; i < 10; i++) /* i を 0 から 9 までインクリメントする for 文 */
printf("hello, world\n"); /* hello, world を printf する */
}
うざぃ。
0034デフォルトの名無しさん
NGNGfor (i = 0; i < 256; i++) ...
0035デフォルトの名無しさん
NGNGalways true な Warning 出ないっけ?
0036名無しさん@1周年
NGNG//
extern void PutData(int *data);
0037名無しさん@1周年
NGNG...
}
DOM/SAX 系 API は全部苦ソ。
0038デフォルトの名無しさん
NGNGfor(i = 0; i < strlen(s); ++i)
...
for の条件判定の中で strlen を使うなよと思った。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGなぜ? 説明してね(はぁと)
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNGそうだよ。
0043マジデ
NGNGDAMN/SUCKS 系 APE とは何でござるか?
0044デフォルトの名無しさん
NGNGvector<むにゃむにゃ> vec;
vector<むにゃむにゃ>::iterator iter;
for (iter = vec.begin(); iter != vec.end(); iter++) {
:
}
どう思う?
0045デフォルトの名無しさん
NGNGstrlen()は明らかに重いので問題あり。
0046デフォルトの名無しさん
NGNGそれはふつうの書き方だと思う。
forの中の strlen()は、そもそもforループ自身が文字列を頭から
順番になめる処理なのに、同じような処理を行うstrlenをループごと
に毎回実行していて、気持ち悪すぎ。
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNGこの程度の事でいちいち玄人扱いしちゃいかんとおもう。
0049デフォルトの名無しさん
NGNG..
if ((err = func()) != NOERROR)
break;
..
if ((err = func2()) != NOERROR)
break;
..
break;
}
if (err){
..
}
ループではないのです。
関数分ければいいのに...
0050デフォルトの名無しさん
NGNG脳梗塞糞馬鹿SEの氏んで欲しい仕様の犠牲者ですね、その関数。
大手いくとたまにそんなあほな仕様が標準化されてるんだよね。
0051デフォルトの名無しさん
NGNGアホか!と思うが。おいらならせめてこう書く。goto使っても
分かりやすくてよみやすい方がいいと思う。
if(func()) goto err;
if(func2()) goto err;
return;
err:
//ERROR処理
return;
0052真のプログラマは PASCAL を使わない
NGNG0053デフォルトの名無しさん
NGNGその書き方はCマガのあっぱれご意見番(だったかな?)で紹介されてたな。
51のような、エラー処理をgotoで飛ばす書き方の代用だそうだ。
(その後、読者からdo{}while(0)を使ったほうが良いとか指摘されてたな。たしか)
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGそれでもいいんだけどね。
0056デフォルトの名無しさん
NGNGfunc();
func2();
}
catch(Error e){
//error processing
}
C++風に書こうよ。
005751
NGNGそりはC++かJavaの時でないと…
Cの最近の言語仕様にはtry、catchあるのかな?
知らんかった。ちょっとうれしい。
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG0061>
NGNGこんなの
if (!func1() || !func2() || ....) {
しっぱいしちゃった...
}
でいいじゃん。
gotoを使うことは恐れないが、最初っからgotoを使いたくなるような
状況に陥らないのが達人。間抜けに「gotoを恐れるな」とか教えると
エラー処理ごときでも乱用するからたまらん。
006251
NGNG異常処理が全部共通ならそれで十分だね。スマソ。
でも関数を10個20個コールしていて、異常処理が3、4パターンくらい
とかいう時には、gotoつかうのが一番すっきりしそうだと思うんだけど。
0063デフォルトの名無しさん
NGNGグローバル変数など使いたく無い場合とか
0064デフォルトの名無しさん
NGNGCのマクロの実装を大威張りで解説してたな。
もっと昔にha例外処理なんてよっぽど
大規模なアプリ以外いらん。とも言ってたな。
0065デフォルトの名無しさん
NGNGあんなんで原稿料貰ってると思うと腹が立つのでこの話題はもうおしまい。
006661
NGNGそうなるとケースバイケースだね。大抵の場合はうまくサブルーチン
分割できると思うけど、状態機械みたいなのを書いてるときはgotoの
ほうがすっきりすることも多い。
0068デフォルトの名無しさん
NGNG状態機械の場合は、状態遷移表を書いて
その表の通りに処理するようにかけば
gotoはいりませんよ
0069一生懸命探す奴
NGNG// table[0x2121] = 0x8140; のような、128KBの変換テーブルが作ってあると思ってくれ。
unsigned short JIStoSJIS(unsigned short jis)
{
return table[jis];
}
unsigned short SJIStoJIS(unsigned short sjis)
{
unsigned short jis;
for (jis = 0x2121; jis < JIS_MAX_CODE; jis++) {
if (table[jis] == sjis)
return jis;
}
}
0070デフォルトの名無しさん
NGNG関数の宣言に extern を付けるのがダメってことだよね。
0071デフォルトの名無しさん
NGNGいやメソッドの先頭が大文字だからだ
Javaみたく「putData」にすべきだ
0072デフォルトの名無しさん
NGNGunsigned int Hogehoge() {
0073デフォルトの名無しさん
NGNGunsigned int Hogehoge() {
・・・
return -1;
}
と言うなら見たことがある。
0074デフォルトの名無しさん
NGNGBOOL InitApplication(HINSTANCE hinstance)
{
…
return RegisterClassEx(&wcx);
}
というコードがあるのだが。
確かにBOOLはintのtypedefだけど・・・
0075デフォルトの名無しさん
NGNGコピペを大量に使うことは駄目なのか??
コードを再利用してるんだから
いいと思うんだけど
なんか駄目みたいに言う奴がいるんだけど・・。
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG漏れがあったらどうする?人海戦術か?
0078デフォルトの名無しさん
NGNG俺はあんまし守ってないけど。
0079デフォルトの名無しさん
NGNG例えばAって関数をBとCから呼び出してるとして、
Bの仕様がちょっと変わってAを修正したとするじゃない。
そんときCもテストし直さなきゃなんないのが面倒くせぇの。
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNGたとえがよくわからん。
0082デフォルトの名無しさん
NGNGオブジェクト指向 じゃないのに、class を使っている。
C言語ユーザーが、オブジェクト指向という概念を勉強せずに、
言語の機能を使うとこういうことになる。
むかしの私。
0083デフォルトの名無しさん
NGNG機能の切り分けとがまずいとか、そもそも設計で間違ってるとか、
そんなんじゃないのか?
008479
NGNGBだけに出力項目が追加になったとか、そんな感じ。
あんま詳しく言えんけどなんか今やってんのそんなんばっか。
最初は同じような処理が多いんだけど、時間が経つとビミョーに
変わってくんの。
0085デフォルトの名無しさん
NGNGBから出力処理を呼び出すところを変えればいいじゃん。
始めは共通化しとくべきた。デバッグ面倒だろ?
0086デフォルトの名無しさん
NGNG#define THE_FIRST_ENTITY_IN_THE_NATURAL_NUMBER THE_CARDINAL_OF_EMPTY_SETS
#define THE_ONLY_ONE_NUMBER_WHICH_CAN_BE_USED_TO_COMPUTE_SUCCESSIONS 1
#define succession(x) ((x) + THE_ONLY_ONE_NUMBER_WHICH_CAN_BE_USED_TO_COMPUTE_SUCCESSIONS)
int i;
for(i = THE_FIRST_ENTITY_IN_THE_NATURAL_NUMBER; i < 10; i = succession(i)) { ... }
0087デフォルトの名無しさん
NGNG鬱だ氏のう
0088デフォルトの名無しさん
NGNGhttp://www.ioccc.org/years.html
0089>88
NGNG009079
NGNGそう。それで今までAを呼び出してた部分をやめて
AからコピペしたものをBに内包する。ほんでそこを直す。
Aを直すとCもテストし直さないとなんないから。
なんであんまり共通化されてない。ってこと。
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNG>Bの仕様がちょっと変わってAを修正したとするじゃない。
>そんときCもテストし直さなきゃなんないのが面倒くせぇの。
A自体の関数単体テストの結果が、両方の場合で同じなら
Cの再テストは必要無かろう。
分けるとはそういうこと。
ついでに、そういう場合は、
Bの変化に合わせてあげるのをA'とするなら、
Aはそのままで、Aを利用するA'を作るだろう。
または、被せる形でのA'が無理なら、
AとA'に共通した部分を抽出した(新たな)関数に
Aの役目をする(新たな)被せ関数と、
A'の役目をbする(新たな)被せ関数を作るもんじゃない?
どっちにしろAとしての振舞いに関しては、最初の段落の通り。
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNG0095アマ
NGNG009679
NGNG修正のたんびにそんなことしてたら関数いくつあっても
足りんよ(´Д`)
0097デフォルトの名無しさん
NGNG1.変数名がVAR1000,VAR1010...
2.サブルーチン名がSUB1000,SUB1010...
3.ファイル名がPROG1000,PROG1010...
.
.
.
(泣)
0098デフォルトの名無しさん
NGNGABSASA
ABSBSA
ABSASB
更にその中の項目が
DATA001
DATA002
DATA003
しかも標準で決められる・・・
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNGこれなら変数名つけるのが楽だね。
見習おう。
0101デフォルトの名無しさん
NGNG20年前なら標準でも仕方ないけど、今そんな
ケチなシステムってあんまりないはずだが…
■ このスレッドは過去ログ倉庫に格納されています