[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/09 11:06 / Filesize : 125 KB / Number-of Response : 558
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ぱっと見て「ヘタだなぁ」と思うコード その5



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/


51 名前:デフォルトの名無しさん mailto:sage [2006/08/12(土) 22:51:50 ]
>>46
どこが矛盾してるんだろうか…。

>>22 があまりにも必死に見えただけなんだけど。

もしかして日本語もあまり得意じゃないのかな? (w

52 名前:デフォルトの名無しさん mailto:sage [2006/08/12(土) 23:16:19 ]
もうすぐお盆なんだからそんなことで煽りあってると
ご先祖様に叱られるぞ

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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<125KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef