[表示 : 全て 最新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/


313 名前:デフォルトの名無しさん mailto:sage [2006/09/25(月) 23:45:47 ]
> FunnyVariant yesterday = Calendar::addDay(today, -1);
このコードキモいな

314 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 00:18:03 ]
まあ、俺が組んだ箇所は金の計算をunsigned intでやってあるけどね。

315 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 00:23:54 ]
そもそも"FunnyVariant"ってネーミングがアレだな

316 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 02:06:22 ]
FunnyVariant はコンテキストによって
整数型になったり通貨型になったり日付型になったりするわけ?
なぜそんなにもバリアントにこだわるんだろう。

317 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 03:53:49 ]
>>314
是非コードの適用箇所を教えてください。
42億ほど用意して突撃させていただきます。

318 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 09:04:26 ]
>>317
314の使っている環境ではunsigned intは64bit以上あるのでは?

319 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 09:53:58 ]
>>316
コンテキストによるんじゃなくて、自分で指定してるじゃん。

320 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 10:53:01 ]
>>318
そんな夢の無いこと言わないでください…

321 名前:デフォルトの名無しさん mailto:sage [2006/09/27(水) 11:28:08 ]
1900京円ほど用意して突撃させていただきます。



322 名前:デフォルトの名無しさん mailto:sage [2006/09/27(水) 12:21:49 ]
321が1990京円用意するより先に、
そこでのunsigned intのビット数はもっと増えていそう。

323 名前:デフォルトの名無しさん mailto:sage [2006/09/27(水) 12:27:39 ]
じゃあ、私は-1円振り込もっと。

324 名前:デフォルトの名無しさん [2006/10/01(日) 01:01:34 ]
【スパイウェア】Yahoo Emulator Part5【堀川水樹】
pc7.2ch.net/test/read.cgi/software/1156652691/

Yahoo Emulatorホントは使いたいんだろ?
堀川に嫉妬してるんだろ?白状してご覧よwww
どうみてもYahoo Emulator以上のソフト自分で作れない低能が堀川水樹でチンコ立てるスレです
ありがとうございました

325 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 01:20:07 ]
>>323
そしたら大金持ちだな。

326 名前:デフォルトの名無しさん mailto:sage [2006/10/01(日) 21:59:52 ]
借金として処理されるだけな気がする

327 名前:デフォルトの名無しさん mailto:sage [2006/10/03(火) 07:49:06 ]
毎日の金利がオーバーフローし続けたりしてな。

328 名前:デフォルトの名無しさん [2006/10/04(水) 00:22:37 ]
sage

329 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 03:09:51 ]
Sub しょりそのいち(ひきすう As Integer)
For かうんた = 0 to 10000 step 200
For かうんたに = 10000 to 0 step -200
(約300行略)
Next かうんたに
Next かうんた
'(゜β゜)/~~
End Sub



Function しょりそのごじゅうに(ひきすう As Long)
(略)
End Function

↑VisualBasic、コメントを除く処理が約1.5万行
入社初日に渡された、売り上げ集計ソフトの逃げた前任者のソースここまでに約1月
動作不安定、仕様を満たせそうに無い、変数宣言殆ど無し
必要なコメントは無く’(笑)とか’(泣)とか不必要なコメントは沢山ある
しかも標準モジュール-日記.basに上司に対する愚痴が山のように書いてある

もちろん最初からから全部書き直しました
書き直し総所要時間(デバック等を含む)約3日
書き直し後のソース約550行

550行のソースを1.5万行で書けるのはある種才能だと思う

330 名前:デフォルトの名無しさん [2006/10/04(水) 08:57:36 ]
あらゆる箇所にコメント書く香具師うぜー
本当に必要なコメントが埋もれてしまうがな

331 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:10:01 ]
>330
居るよな、そういうヤツ。
酷い場合、そういうのがコーディングガイドになってたりするところもあるわなぁ('A`)
お互いにプロなんだから、そんな基本的なコメントいらんから、
てか、空気読めよ、みたいなヤツな。

典型的なのが、

int i=0; //変数iを0で初期化する。

こういうのとか、

exit 0; //リターンコード0を返し、処理を終了する

とかな。




332 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:13:34 ]
print $_->[0],"\n" for sort{ $_->[1] }map{[$_,lc$_]} @ARGV;

おまえらはコレにコメント欲しい?なくても読める?
俺はなくても読めるし無いほうが簡潔だと思うけどどうよ?

333 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:18:02 ]
前後の繋がりもあるから一概には言いにくいが、ぱっと見解りにくいと思われ

334 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:25:34 ]
>>332
コメントがどうこう以前にウンコに見える

335 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:31:06 ]
だめなコメント

print $_->[0],"\n" # 要素の最初のデータを表示
  for          # 要素を順に
   sort{ $a->[1] cmp $b->[1] } # 2番目の要素でソート
   map{[$_,lc$_]}  # 要素を元データとそれを小文字化したペアに変換
   @ARGV;      # コマンドライン引数

正しいコメント

# コマンドライン引数をケース非依存をソートして順に表示
print $_->[0],"\n" for sort{ $a->[1] cmp $b->[1] }map{[$_,lc$_]} @ARGV;

336 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:43:50 ]
# ホルホル
print $_->[0],"\n" for sort{ $_->[1] }map{[$_,lc$_]} @ARGV;

337 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:48:47 ]
>>331
いねーよ、そんな奴w

338 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:51:58 ]
じゃあこれはどうよ?

$r=query($conn,"insert into t1(".join(',',sort keys %d).")values(".join(',',map{db_quote($d{$_})}sort keys %d).")");

339 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:54:32 ]
言語仕様そのものがゴミクズ。

340 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 11:56:09 ]
>>338
これは無理
こんなの一行で書くんじゃねえよ

341 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 16:51:43 ]
>>338
ぱっと見、フィールド名と値の順番は大丈夫か、ちょっとどきどきする。



342 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 18:42:26 ]
変数名もドキュメントの一部

343 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 23:26:04 ]
変数名だけで何をやるのかが分かる

344 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 01:13:47 ]
末尾の数字だけが違う以外は同名の関数が複数出てくるコード。

private Hoge createHoge(Fuga fuga){
 // なんか処理
}

private Hoge createHoge2(Fuga fuga){
 // createHoge と殆ど同じ処理
}

以下、createHoge6 あたりまで続く。

無印〜6までの使い分け条件・使い分けが必要な理由は
コメントにも仕様書にもどこにも書いてない。

マジックナンバーがそこら中に分散、
一つの関数が300行越えるのはザラ、
等の諸症状も併発する。

345 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 01:16:02 ]
class名見れば分かるのにメソッドにまでわざわざ長ったらしく書く奴

346 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 02:58:18 ]
コメント読むとおつむの程度が知れる。

コメント読まれるとおつむの程度が知られてしまう。

だから漏れはコメントを書かない。


これぞ自衛的プログラミングの極意。


347 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 03:11:14 ]
コード書かなきゃいいんじゃね?

348 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 07:20:14 ]
それだ!

349 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 11:18:26 ]
要求だけあって、仕様がない一人案件の場合、
おもむろに作り始めるんだけど、
そういう場合、変数やら関数の意味が
あとからだんだん変わってしまう場合が多いので
あまり真剣に考えても意味がない。
適当にしたほうが良い。

ということを学んだ入社半年目。

350 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 11:43:32 ]
まーそういう事もままあるが、途中で随時リファクタリングしてる。
IDEが簡単な置き換えしかできないシケたヤツだとダルいけど。

351 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 11:44:05 ]
>>349
こいつ下手



352 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 12:19:03 ]
>>349
変数と関数で物事括ってるからマズいんでね?

353 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 15:17:29 ]
>>349
死刑

354 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 09:44:47 ]
>>349
意味が変わってきたら、それに応じてリファクタリングかけるべきだな。
いつでも変数の意味は正確な物にしておくほうがベター。
考えても意味がないっていうのは、ちょっと良い考え方ではない。

一人案件でも、仮に趣味のコードでも、このへんは変わらんよ。
数ヶ月後の自分は、今の自分からみたら他人並。
その時に、わかりやすいコードとコメントが意味を持ってくるものだし。
本当に作り捨てで今だけ解ればいいっていうなら、手を抜くのも有りではあるが…
案件なら、作りっぱなしでもう2度とコードみないって訳にもいかなかったりするだろ?
入社半年目なら、今のうちに考え直す方が良いよ。


355 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 13:02:17 ]
袋叩き

356 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 14:02:25 ]
変数名考えてる時って、頭の片隅で設計してるんよ。
見通しの悪い設計してるから良い名前が付けられない。

357 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 14:29:26 ]
あー、プログラムの文脈以外に、識別子に意味もつけられたら便利かもと、唐突におもた

358 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 16:23:43 ]
boolean型で変数名 flag

これ最強。

359 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 23:58:23 ]
俺の bool b とどっちが強いかな??

360 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 00:08:23 ]
5行くらいの関数で使うんならアリだぜ。

20行越えてたら殺す。

361 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 00:12:51 ]
悪い、40行くらいのコードでも普通に使い倒してる。
二回死んどくから勘弁してくれ。



362 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 00:31:39 ]
許す。

363 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 00:54:44 ]
String s = new String();
s = "foobar";

364 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 00:57:24 ]
void foo() throws Exception { ... }


365 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 06:28:02 ]
今時、for文でループまわしているのを見たとき

366 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 07:10:51 ]
>>365 kwsk

367 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 07:35:18 ]
>>366
eachとかforeach使えってこと。
iteratorでも可
まあ、今時、それらができない言語は時代遅れだと思う

368 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 07:44:09 ]
階乗の計算をeachやforeachで書ける?

369 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 08:58:17 ]
>>368
もちろん、書かない。
わざわざ適していない方法で書く必要はない。
そういうときは、適している方法で書く。
例えば、再帰で書く

370 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 09:15:02 ]
for文でループまわす必要があるのはリストよりはマップ。
キーと値を特定の順序で取り出したい場合は eachやforeachは弱い。

371 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 09:15:39 ]
若者の都会かぶれが流行ってると聞いちょるがここまで進んでるたぁ、おれぁもうガマンならねぇ!
出直してけぇな>>369さん!



372 名前:386 mailto:sage [2006/10/08(日) 09:26:45 ]
>>368
そういうのはfold_left系の関数の出番だな。
 ruby
(1..n).inject(1){|x,y|x*y}
 C++
#include<boost/iterator/counting_iterator.hpp>
#include<numeric>
#include<functional>
int fact(int n){
    return std::accumulate(
        boost::make_counting_iterator(1),
        boost::make_counting_iterator(n+1),
        1,std::multiplies<int>());
}

373 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 09:28:24 ]
>>372
おっと名前欄にほかのスレの数字残ってたな。
その辺はスルーしといてくれ

374 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 10:01:34 ]
うあ、面倒くさっ!

375 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 10:04:28 ]
> (1..n).inject(1){|x,y|x*y}
うぉ。こんな風にかけるんだ

376 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 10:09:03 ]
haskellだと
factorial n = product [1..n]
haskell万歳!

>>372
int fact(int n)
{
 int res = 1;
 for(int i=2;i<=n;++i)
  res *= i;
 return res;
}

と書いたら「ヘタだなぁ」と思われるの?

377 名前:372 mailto:sage [2006/10/08(日) 10:25:22 ]
思われない思われないw 俺もネタ以外では普通にそうやる。
関数型言語っぽいやりかたはC++ではまだまだ面倒だからね。

378 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 11:02:23 ]
普通に末尾再帰で書けばいいじゃん。
#include <cstdio>
#include <cstdlib>

template <typename T> inline T factrial(int n, T s = 1)
{
return n > 1 ? factrial(n - 1, s * n) : s;
}

int main(int argc, char ** argv)
{
printf("%d\n", factrial<int>(atoi(argv[argc - 1])));
printf("%.20g\n", factrial<double>(21));
return 0;
}

今時のコンパイラならループに展開するだろ。

379 名前:デフォルトの名無しさん [2006/10/08(日) 11:41:00 ]
末尾再帰の最適化って関数型言語限定だと思ってた…
今まで再帰のほとんどをループに直してた僕の努力は一体orz

380 名前:デフォルトの名無しさん [2006/10/08(日) 11:52:17 ]
Javaで、
引数、ローカル変数をできる限りfinalにしてない
コードをみると

あ、こいつはダメだ。

と思う。


381 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 12:17:21 ]
引数までfinal化する必要があるかは程度問題だと思うんだが。
ローカル変数も同じ。

Java使ってまでC++と同じ流儀で徹底しないでもいいだろ。
C++でconstつけない奴は尻が二つに割れるまでチョップの刑だが。



382 名前:380 [2006/10/08(日) 12:37:24 ]
>381
いや俺はできる限り、あらん限りの方策で
すべてfinal化するべきだと思っている。

383 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 13:24:59 ]
うむ

384 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 13:47:24 ]
Delphiで、引数にconstつけて周る俺がきましたぉ

385 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 13:59:43 ]
なんでconsomeはないの?

386 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 18:29:22 ]
>>376 378
下手かどうか以前にバグってるぞ

387 名前:378 mailto:sage [2006/10/08(日) 21:01:10 ]
>>386
どっかバグってた?
#関数名以外でw

388 名前:デフォルトの名無しさん [2006/10/08(日) 22:09:01 ]
C++でクラスにする必要のない処理をわざわざクラス化してるとき

389 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 22:21:19 ]
>>376 ++i  を使ってる時点で俺的にoutなんだが

390 名前:デフォルトの名無しさん [2006/10/08(日) 22:23:22 ]
*=ってなんでつかwwwwww

391 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 22:27:46 ]
>>389-390
素人は帰れ。



392 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 22:35:47 ]
resはどこで確保されてるか

393 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 22:37:08 ]
>>389
C++の勉強をしましょう。
>>390
Cの勉強をしましょう。

394 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 22:37:52 ]
>>392
>390が指摘している行の2行上。

395 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 22:44:24 ]
はいはい、i++と++iは同じです。

396 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 22:50:20 ]
>>395
C++の勉強をしましょう。

397 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 22:56:04 ]
>>396
その話題飽きた

398 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:00:15 ]
勉強しても++iとi++は同じであることがわかるだけだけどな。

399 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:02:50 ]
>>398
C++の勉強をしましょう。

400 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:03:40 ]
先に加算するか後で加算するかの違い
なんて関係ないことがほどんどだよな

401 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:05:07 ]
C++の勉強をしましょう。



402 名前:デフォルトの名無しさん [2006/10/08(日) 23:06:31 ]
>>376がC++で書いたとは限らない

403 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:23:53 ]
>>402
C++ですが、なにか?

404 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:29:36 ]
>>401
何が違うのか説明してみろ。

405 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:30:20 ]
この場合は何もかわらんな

406 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:30:37 ]
しょうがないな、正解を言うぞ、
i++; は tmp=i,++i,tmp; という命令、階乗は ((1 + n) * n) / 2 で求まる。

うはっWWWオレ天才WW

407 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:33:43 ]
中学の数学の勉強をしましょう。

408 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:35:01 ]
>>400
i++の式値はi
++iの式値はi+1

前とか後とかじゃない、式値が違うだけだ

409 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:37:01 ]
>>408
で、>>376の文脈で違いはあるのか?

410 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:38:00 ]
>>409は400か?
>>400では>>376に言及してないぞ?
急に文脈を無視して>>376に関連付けられても困る

411 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:39:06 ]
>>410
流れ嫁



412 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:39:31 ]
shine!

413 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 23:42:05 ]
0!が考慮されてないって意味じゃね?

あと++iとi++は戻り値が違う。






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

前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