トップページ⇒tech
1001コメント231KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
基礎編 
・サブルーチン(関数)が数百行 
・ネストが深い 
・マジックナンバーが使われまくり 
・識別子(変数名、関数名)が意味不明 
・グローバル変数使われまくり 

↓応用編、詳細編どうぞ 

過去スレ 
http://pc8.2ch.net/test/read.cgi/tech/1141867015/l50
http://pc8.2ch.net/test/read.cgi/tech/1142741989/l50
http://pc8.2ch.net/test/read.cgi/tech/1149986051/l50
0153 2006/07/22(土) 16:50:02
>>151
どうしても原因が分かりませんでした。
0154デフォルトの名無しさん2006/07/22(土) 16:51:47
>>148
もう流行らないよ。
あんなの。
0155デフォルトの名無しさん2006/07/22(土) 16:54:21
じゃ、今時は何がはやってるの?
0156デフォルトの名無しさん2006/07/22(土) 16:57:26
javadoc
0157デフォルトの名無しさん2006/07/22(土) 16:58:01
>153
\r\n、\r、\n が混在とか、あるいは文字コードも混在してたとか?
ここで続ける話題じゃないのは確か。
俺の主張は /* .. */ の方が安全かもという論には賛成できないってこと。
0158デフォルトの名無しさん2006/07/22(土) 17:01:50
ブロックコメントでデッドコードにするなら消す理由と消した日付もコメントする事。
賞味期限切れになったらまとめて消去するから。

YAGNIだったら最初から残さないでくれ。
0159デフォルトの名無しさん2006/07/22(土) 17:02:34
>>157
俺は

/* 初期化処理 */

とかいうコメント嫌い。
いざブロック単位でコメント入れたいときに

/*

/* 初期化処理 */ ←こいつのせいでブロックでコメントできない。

*/

から。面倒だから/**/を使う奴に「止めてよ」っていったら、
ブロック単位でコメントしたいときは#if 0 #endif使ってくれって言われた。
面倒臭ぇよ・・・orz
0160デフォルトの名無しさん2006/07/22(土) 17:27:16
// 一行だろうと複数行だろうと
// 常に←これしか使わない俺は ANSI C では負け組
0161デフォルトの名無しさん2006/07/22(土) 17:38:05
CVSつかいたまい
0162デフォルトの名無しさん2006/07/22(土) 17:45:39
リファクタリングに出てくる「不吉なにおい」って、おもたけど
ぱっと見てわからんものもあるからなぁ
0163デフォルトの名無しさんNGNG
>>152
>コメントの形式でコードの質が変わるわけでもなし。 

ヘタなコメントは、コードの質を明らかに下げてるよ。
0164デフォルトの名無しさん2006/07/22(土) 18:11:38
>>163
もう休め。おまえはよくやった。
0165デフォルトの名無しさんNGNG
それに、コメントの付けたかの下手なやつは、コードもヘタだしな。

>>164
3分未満で即レス付けられるくらい、がんばってこのスレに張り付いてるお前の
ほうがよくやってるよ。尊敬する。
0166デフォルトの名無しさん2006/07/22(土) 18:36:24
カンマを行末につけてるやつ
 a,
 b,
 c
0167デフォルトの名無しさん2006/07/22(土) 18:40:15
カンマは行末に付けたい。
0168デフォルトの名無しさん2006/07/22(土) 18:43:37
もうね、

  // ジューステーブルの「消化日」項目には、現在の日付が保存されるべきだが
  // 下のメソッドでは帳票オブジェクトの「注文日」を決め打ちで使ってしまうため
  // ここで回避
  Variant orderDateOld = chouhyou.getOrderDate();
  chouhyou.setOrderDate(getNowDate());

  JuiceTable.insertFooBarData(chouhyou, foo, bar, hoge);

  // 元に戻す
  chouhyou.setOrderDate(orderDateOld);

俺氏ね。
0169デフォルトの名無しさん2006/07/22(土) 18:51:31
下手なコメントなんかどうでもいいじゃん。
下手な「コード」の話しようぜ。
0170デフォルトの名無しさん2006/07/22(土) 19:03:40
スタイルの問題かもしれんが

if (!(fp = fopen(filename, "r"))) {
}
0171 2006/07/22(土) 19:04:33
>>170
どう書くべきだと思ってるのか教えてくれ。
0172デフォルトの名無しさん2006/07/22(土) 19:06:18
どう書くべきとか、そんな大したもんじゃなくて

fp = fopen(filename, "r");
if (!fp) {
}

って分けて書いてほしいってだけの愚痴です。
ハイ、すみません。
0173デフォルトの名無しさん2006/07/22(土) 19:21:21
C99使ってよければ、こうしてくれ。
FILE *fp = fopen(filename, "r");
if (!fp) {
0174デフォルトの名無しさん2006/07/22(土) 19:38:12
変数や構造体のメンバの定義で、変数名の"後ろ"を特定列に合わせる.. という規約があった。
スペースキーを打っていちいち後ろを調整するのは面倒だよ〜。
0175デフォルトの名無しさん2006/07/22(土) 19:43:10
>>149
はい、バカの見本でました。

これがぱっと見て「ヘタだなぁ」と思うコードスレによく出没するアホ論理バカです。
論理というものが理解できず、結論が理由になっちゃうんですね。

素人はブロックコメントで装飾する
↓
だからブロックコメントをするのは素人
0176デフォルトの名無しさん2006/07/22(土) 19:48:39
>>165
>>3分未満で即レス付けられるくらい、がんばってこのスレに張り付いてるお前の
>>ほうがよくやってるよ。尊敬する。

と4分未満で即レス付けてるお前が一番必死に張り付いてると思う。
0177デフォルトの名無しさん2006/07/22(土) 19:49:16
関数の戻り値がunsigned型で、成功は0、エラーは0xFF,0xFFFF等。
0178デフォルトの名無しさん2006/07/22(土) 19:51:03
>>177
C言語なら普通だろ
0179デフォルトの名無しさん2006/07/22(土) 19:51:50
で、関数を呼び出した後、
if ( rtn < 0 )
{
// エラー処理
}

と書いてしまってはまる。
0180デフォルトの名無しさん2006/07/22(土) 19:54:24
アホなだげじゃ゛ん゛
0181デフォルトの名無しさん2006/07/22(土) 19:55:58
ぱっと見てアホだなぁと思う
0182デフォルトの名無しさん2006/07/22(土) 20:04:44
C言語で、変数や構造体のメンバに文字列をNULLストップで格納しない。

その変数に対してstr系関数を使う場合は要注意。
0183デフォルトの名無しさん2006/07/22(土) 20:21:42
>C言語で、変数や構造体のメンバに文字列をNULLストップで格納しない。
んなもん扱うデータのデータ構造によるから言語なんて関係ないしましてやうまいへたとも関係ない。
0184デフォルトの名無しさん2006/07/22(土) 20:37:01
8バイト固定のIDとかに9バイト割り当てたら、そっちのがバカっぽいな
0185デフォルトの名無しさんNGNG
>>175
いや、理由はあるけど、教えてあげないだけ。
それは、理由はいわなくても、状況見ればわかるだろって言ってるの。
0186デフォルトの名無しさんNGNG
>>184
状況によるんじゃないの?
0187デフォルトの名無しさん2006/07/22(土) 21:06:30
「俺が正しい。お前らが間違っている。」
皆そう思ってるんだろ?
0188デフォルトの名無しさん2006/07/22(土) 21:28:34
いや。俺は氏ぬべき。
0189デフォルトの名無しさん2006/07/22(土) 22:00:49
コメントが下手だからコードも下手なんじゃなくて、
何もかも下手だからコメントも下手なんでしょ。
0190デフォルトの名無しさん2006/07/22(土) 22:17:04
スコープを最小限にするために

関数{
 なんやらかんやら
 {
   変数宣言
   変数使用
 }
}

みたいなことを多用するんだが、このブロックなんだよ、キモいよと言われる。
まぁキモいとは思うんだけど、どうするのがベストだろう?
関数にしてしまうとかえって可読性下がりそうだし。
(ブロック書いて済ませたくなるほどしょぼい処理だから
適切な名前を考えるのが難しいため。)
0191デフォルトの名無しさん2006/07/22(土) 22:19:35
>>190
キモいよ
0192デフォルトの名無しさん2006/07/22(土) 22:21:19
俺もたまにやるけど、徹底はしない。
0193デフォルトの名無しさん2006/07/22(土) 22:23:29
>>100
何をもってプロっぽいって言ってるかよくわからんけど、
コメントの書き方じゃなくてコメントのフォーマットに文
句つけてるだけの奴は下手なんだろうなぁと思う。
0194デフォルトの名無しさん2006/07/22(土) 22:24:53
>>190
「キモイよと言われる」ことと「スコープ最小限にする」ことを秤にかけて決めればいい。
0195デフォルトの名無しさん2006/07/22(土) 22:25:51
>>185
ホント、バカ丸出しだな
0196デフォルトの名無しさん2006/07/22(土) 22:29:10
普通関数化するでしょ
0197デフォルトの名無しさん2006/07/22(土) 22:31:28
日本人は囲うのが好きな民族だから、そうしたい奴がいても
不思議じゃないし、コードの巧い下手とは関係無いと思うがどうだろう。
0198デフォルトの名無しさん2006/07/22(土) 22:32:58
>>196
数行でも?
それはそれで「徹底」されるとうざいと思うけどな。
0199デフォルトの名無しさん2006/07/22(土) 22:34:03
>>198
つか、君、関数の平均行数は何行くらいなのさ
0200デフォルトの名無しさん2006/07/22(土) 22:37:58
>>199
大体一画面 (30行ぐらいか) が目安ですけど。
0201デフォルトの名無しさん2006/07/22(土) 22:39:42
>>200
それはキモい
0202デフォルトの名無しさん2006/07/22(土) 22:43:51
C3プロジェクトでは、1メソッドの平均行数が6行だったらしいからね。
うまくやれば、短い関数が多くあっても気にならないのでは?
0203デフォルトの名無しさん2006/07/22(土) 22:50:13
>>202
て言うか、

関数{
 int a;
 なんやらかんやら
 {
   変数宣言
   変数使用
   a = 変数
 }
}

なんて場合は関数化しにくいだろ。
0204デフォルトの名無しさん2006/07/22(土) 22:52:06
これはキモい
0205デフォルトの名無しさん2006/07/22(土) 22:53:51
>>203
procedureじゃなくてfunctionにすればいいんじゃね?
0206デフォルトの名無しさん2006/07/22(土) 22:55:20
C3ってなんや
0207デフォルトの名無しさん2006/07/22(土) 22:55:39
戻り値
0208デフォルトの名無しさん2006/07/22(土) 22:56:31
>>203
 {
   変数宣言
   変数使用
   a = 変数
 }

の部分、まんま関数化できると思うが。
なにがしにくい?
0209デフォルトの名無しさん2006/07/22(土) 22:58:01
関数って、成功か失敗しか返せないと思ってるんじゃないかな
0210デフォルトの名無しさん2006/07/22(土) 22:59:44
一行のわかりづらいif文ですら、メソッド化しましょうというこのご時勢に、何を言ってるのやら
0211デフォルトの名無しさん2006/07/22(土) 23:09:27
>>205, >>207, >>208-209
変数ひとつだけならいいけど、複数あったらどうするんだ?

>>202, >>210
メソッドとかの意味がある奴ならたとえ一行でもいいけど、
処理の一部なんかを単にブロック化するためだけに関数化
するなんてだと単にわかりにくくなるだけと思うけどな。
0212デフォルトの名無しさん2006/07/22(土) 23:20:09
>>211
ヘタな例しか出して無い癖に、後出しで条件増やして
どうするんだ?とかセコいことすんな
0213デフォルトの名無しさん2006/07/22(土) 23:22:21
馬鹿だから相手にしないほうがいいよ。
0214デフォルトの名無しさん2006/07/22(土) 23:23:07
傍から見てるとどっちも大差ない
0215デフォルトの名無しさん2006/07/22(土) 23:25:08
だったらスコープを最小限にするだけのためのブロック作らなければいい
0216デフォルトの名無しさん2006/07/22(土) 23:26:49
裸のブロック開始記号が出てくるのが気持ち悪いのかねぇ。

/* なんか中身の説明 */ {
hoge();
}
とか
#define なんかシンボル /*空定義*/
なんかシンボル {
hoge();
}

とかしたらまた違うんだろうか。
0217デフォルトの名無しさん2006/07/22(土) 23:57:59
ヴァーカ
ボクが下手なわけじゃないんだ
チミたちが理解力がないだけなんだ
そうだボクは天才だからだ
わかったら下僕のように言うことを聞け
0218デフォルトの名無しさん2006/07/23(日) 00:09:29
>>212
そんなことにも気が回らないの?
0219デフォルトの名無しさん2006/07/23(日) 00:10:58
>>216
よけいにキモイ。
0220デフォルトの名無しさん2006/07/23(日) 00:14:07
予想通り最後は煽り合うだけかw
0221デフォルトの名無しさん2006/07/23(日) 00:18:23
>>216

/*↓コメントにしてぇときどうしてるの?

/* なんか中身の説明 */ {
hoge();
}
とか
#define なんかシンボル /*空定義*/
なんかシンボル {
hoge();
}

*/
0222デフォルトの名無しさん2006/07/23(日) 00:25:59
#ifdef 〜 #endif
0223デフォルトの名無しさん2006/07/23(日) 00:29:51
>>222
それが嫌だからしつこく食い下がる!
面倒臭ぇんだよ!
なんでこれでいいとかいう神経してんの?

この↓ほうが楽じゃん。
//コメント

0224デフォルトの名無しさん2006/07/23(日) 00:36:13
> この↓ほうが楽じゃん。
> //コメント

自分がそうしたければそうすればいいんじゃない?

おれは、#if 〜 #endif はそう面倒とは思わないけど。
0225デフォルトの名無しさん2006/07/23(日) 00:36:17
String hoge = new String();

で文脈にかかわらず必ず初期化されているコードを見たことがある。
0226デフォルトの名無しさん2006/07/23(日) 00:36:34
>>223
方法によって面倒くさくなるほどコードをコメントアウトすることがあるのが間違い。
0227デフォルトの名無しさん2006/07/23(日) 00:42:36
>>226
2つコード書いて、ちょっと試してみたいときあるじゃん。
その「ちょっと」なんだよ。
この「ちょっと」なんだけど、これが面倒だと嫌なんだよ。

しかもさ、別に
//コメント
この↑コメントの仕方すれば解決する問題じゃん。
わざわざ/* */ってやって他の人に嫌がらせしてるみたいじゃん。
これが我慢ならねぇところ。

ちなみに俺は/**/って使ってもコミットするときはこのコードはソース上に残さない。
0228デフォルトの名無しさん2006/07/23(日) 00:50:14
なんで #if 〜 #endif がそれほど面倒なのかよくわからん…。
0229デフォルトの名無しさん2006/07/23(日) 00:51:20
Borland C++とかオプションでコメントのネストができるようになる処理系もあるよ。
自分だけでもそれつかったらどう。
0230デフォルトの名無しさん2006/07/23(日) 01:12:07
>>211
ブロック化って単に変数のスコープを局所化したいだけなんだろ。
関数の行数平均30行のお前が、なんで多用するんだよ?

使い捨て一時変数の名前と、意味のある変数の名前のネーミングルールを
全く別のものにすれば問題ないだろ。
0231デフォルトの名無しさん2006/07/23(日) 01:13:59
>>228
面倒だよー。
しかも、VCで緑色にもならないし。
みんなでVC使って開発してるのにすげー邪魔くせー。
協調性無いのもすげー嫌。

>>229
嫌だー。なんで俺は悪くないのに俺が妥協しなきゃならんのだー。
みんなからブーブー文句言われてるのにそいつだけ変な意地はってすげー邪魔くせぇ。
0232デフォルトの名無しさん2006/07/23(日) 01:18:31
> しかも、VCで緑色にもならないし。
これは、結構重用だと思う。

パッと見てコメントだと識別できた方がいいよな。
0233デフォルトの名無しさん2006/07/23(日) 01:19:15
>>232
どうせコミットしない一時的なコードだからどうでもいいだろ。
0234デフォルトの名無しさん2006/07/23(日) 01:19:34
>>231
どっちがいいとかは別として、
このスレでも君の会社(?)でも
そのやり方が少数派なのは確か。
0235デフォルトの名無しさん2006/07/23(日) 01:29:06
局所ブロックを多用したくなるのは、
・構造化できていない
・データ構造がなってない
・全般的に下手
のどれかでしょ。
0236デフォルトの名無しさん2006/07/23(日) 01:31:39
do {
...
} while (0)
と書けば、誰も文句言わない。
0237デフォルトの名無しさん2006/07/23(日) 01:46:57
>>236
>>45
0238デフォルトの名無しさん2006/07/23(日) 01:47:49
2005 だとデフォルトで
#if 0
#endif
は灰色になるよ
0239デフォルトの名無しさん2006/07/23(日) 02:01:31
>>230
俺に言うなよ。

俺は、ブロックを「普通関数化するでしょ」とか言う >>196
がおかしいと思ってるだけなんだから。

ブロック多用してた時代もあったけど、やっぱり違和感があるから
単独のブロックはほとんど使わない。
0240デフォルトの名無しさん2006/07/23(日) 02:01:57
>>238
#if 0
#endif
よく↑内にクラスや関数の簡単な使用方法を
書いたりするんだが、それでいきなり見辛くなったw
デフォルトで通常の色にしておいて欲しかったよ。
ってこれは下手かな?
0241デフォルトの名無しさん2006/07/23(日) 02:25:07
>235
・クラスのサイズがデカい。もっと分割出来るのにしてない。
とかもある。
0242デフォルトの名無しさん2006/07/23(日) 02:35:16
#define block /**/

int hoge() {
 ...
 block {
  ...
 }
 ...
}

うはwwww俺キモイwww
0243デフォルトの名無しさん2006/07/23(日) 02:50:40
前にcppmlで少しだけ話題になってたね。
俺はこういうアイデアがいいと思った。

int hoge() {
 ...

 // ここからなんたらかんたらの処理 ←とコメントを入れる
 {
  ...
 }

 ...
}

関数化して外に出したくなった場合も、コメントがそのまま使えるしね。
0244デフォルトの名無しさん2006/07/23(日) 05:43:44
>>243
http://www.freeml.com/message/[email protected]/7539
これのことか?
0245デフォルトの名無しさん2006/07/23(日) 08:30:21
>>244
頭ワロスw
0246デフォルトの名無しさん2006/07/23(日) 08:33:23
オナニーを見せておいて、注意されたら止めるんだろうな
0247デフォルトの名無しさん2006/07/23(日) 11:10:49
>>239
普通関数かするでしょ
0248デフォルトの名無しさん2006/07/23(日) 11:12:08
関数内関数すら定義できない糞言語なんて使うなよwww
0249デフォルトの名無しさん2006/07/23(日) 11:12:55
Cも関数内関数が使えればよかったんだけどな。
ってPascalの関数内関数が見易さの向上につながるとは思えないけど。w
0250デフォルトの名無しさん2006/07/23(日) 11:16:31
C++でも方法次第では出来るらしい。だが、使い勝手は極めて悪そう。
ttp://www1.kcn.ne.jp/~robe/pf/pf004.html
0251デフォルトの名無しさん2006/07/23(日) 11:17:22
Perlでオブジェクト指向プログラミングするようなもんだね
0252デフォルトの名無しさん2006/07/23(日) 11:17:51
それだけのために関数内クラスなんて阿呆の極みだ
■ このスレッドは過去ログ倉庫に格納されています