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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2007/11/09(金) 02:22:36
コンパイラによって互換性が無いんだから ifdef の雨嵐でも仕方あんめぇ。
コンパイラが1種類しかない言語がウラヤマシイ。
953デフォルトの名無しさん:2007/11/09(金) 03:04:57
対応がおかしくなければ、たいていのスタイルはおっけ。
贅沢言うなら、一人で書いたソースは、スタイルが統一
されているとうれしい。

どうせ整形してから読むし。
954Java2年生:2007/11/09(金) 08:08:17
【×】
if (flag) {
  flag = false;
} else {
  flag = true;
}

【〇】
!flag;

955デフォルトの名無しさん:2007/11/09(金) 08:14:01
【〇】
flag = !flag;
956デフォルトの名無しさん:2007/11/09(金) 08:16:56
if foo = bar then begin
do_somthing
end else begin
do_other_things
end
957デフォルトの名無しさん:2007/11/09(金) 08:25:27
>>952
互換性を保つのは別のレベルでやれと。
そういう意見じゃないか?

俺はあまりにも低機能なメソッドで構成されたプログラムは嫌だ。
1関数、1行〜5行みたいな。

飛びすぎて読むの疲れるし、push pop 多そうだな、と思って嫌気が差す。
958デフォルトの名無しさん:2007/11/09(金) 08:27:40
>>957
インライン展開できないコンパイラをお使いですか?
959デフォルトの名無しさん:2007/11/09(金) 10:09:07
>>958
引数が少なくて push pop しないまでも、レジスタへの代入はあるだろうな。

というか、そういうコードを書いてるのか?
960デフォルトの名無しさん:2007/11/09(金) 10:36:53
>>959 インライン展開を理解しる
961デフォルトの名無しさん:2007/11/09(金) 10:46:53
>>959
>958はどうか知らんが、漏れならこんな関数も作る。
static unsigned offset(unsigned x, unsigned w, unsigned y) {return x + w * h;}
ちなみに、array[offset(x, w, y)]と言う使い方をするわけだが基本的に、array[x + w * h]と書くのと変わらないコードになる。
また、C++なら(当然の如く)ゲッタセッタを書くわけだがこれらもpublicメンバにアクセスするのと何ら変わらない。
つまり、短い関数がスタックやレジスタや、その他のコストを余計に発生させるとは一概には言えないということ。
# 勿論、短い(深く再帰する)再帰関数が無駄にスタックを消費することは言うまでもないが。
962デフォルトの名無しさん:2007/11/09(金) 10:47:33
あ、typo。
array[x + w * h]じゃなくてarray[x + w * y]だね。
963デフォルトの名無しさん:2007/11/09(金) 11:47:27
159 名前:デフォルトの名無しさん[sage] 投稿日:2007/11/06(火) 11:38:04
釣られてやるか。

少なくともBNFではシンタクスしか理解できんわな。
セマンティクスはBNFでは表現できないし、理解できない。

ソースを読めるかどうかは、前提となる技術や理論や知識を読み手が持っているか
どうかにかかっているが、ソースがモデル化している概念や仕様に関する
知識が零である場合、ソースを読んでそれを再構成しようとするのは非常に
難しくなる。それが複雑であればあるほどに。

>>155-156は口だけ厨房だな。
964デフォルトの名無しさん:2007/11/09(金) 12:32:32
>>963
まだその話してんのか・・・w
まさにシンタックスについて話したかったからBNFモドキで
書いたってことすら分かってないだろ、お前・・・。
965デフォルトの名無しさん:2007/11/09(金) 12:34:36
君の狭いすき間にinsert()メソッドを適用させてくれ
966デフォルトの名無しさん:2007/11/09(金) 12:42:25
すき間ってnullじゃね?
967いかん、スレが違うのか:2007/11/09(金) 12:46:43
push_back()じゃダメ?
968デフォルトの名無しさん:2007/11/09(金) 15:38:22
159 名前:デフォルトの名無しさん[sage] 投稿日:2007/11/06(火) 11:38:04
釣られてやるか。

少なくともBNFではシンタクスしか理解できんわな。
セマンティクスはBNFでは表現できないし、理解できない。

ソースを読めるかどうかは、前提となる技術や理論や知識を読み手が持っているか
どうかにかかっているが、ソースがモデル化している概念や仕様に関する
知識が零である場合、ソースを読んでそれを再構成しようとするのは非常に
難しくなる。それが複雑であればあるほどに。

>>155-156は口だけ厨房だな。
969デフォルトの名無しさん:2007/11/09(金) 15:50:49
>>853a && (foo(), 1) || (bar(), 1) && (hoge(), 1);は
a=1の場合、a && (foo(), 1)が真になるからここで処理を終了するという風になっているのでしょうか?
970デフォルトの名無しさん:2007/11/09(金) 15:54:45
知らなくていい。

書くな、そんな糞コード。
971デフォルトの名無しさん:2007/11/09(金) 16:59:19
短絡評価でググれ
972デフォルトの名無しさん:2007/11/09(金) 17:02:19
>>971
そんなのがあるのですね・・・
入門書にかかれていないのって結構多いですね。
973デフォルトの名無しさん:2007/11/09(金) 18:02:34
糞コードと言うか、もう”ウイルス”と言っても過言ではない。
974デフォルトの名無しさん:2007/11/09(金) 18:07:56
訂正した方が善いのでしょうか?
`python-lib_text.に`SyntaxError.が…(+ФyФ)!ですが動作する物ですね…
975153:2007/11/09(金) 18:36:18
>>934
DOSでプリントアウトできて、
ブラウザにドロップしてもインデントが乱れなくて、
E-Mailでのreplyにも耐える
ようにすると8タブで72文字になってしまうw
976153ではありません:2007/11/09(金) 18:37:58
変なクッキー食ったままだったorz
977デフォルトの名無しさん:2007/11/10(土) 00:14:41
>>934
サブルーチンが20行以内とか、まともにコーディングしたことないやつのたわごとだろ。
978デフォルトの名無しさん:2007/11/10(土) 00:15:37
1〜5行程度の関数って結構書くけどなぁ・・・
979デフォルトの名無しさん:2007/11/10(土) 00:28:36
全部20行以内と、1行の関数を書くことがあるのとはぜんぜん違う。
980デフォルトの名無しさん:2007/11/10(土) 00:33:37
あと、よくいるのが「一画面以内」だな。
画面が20〜25行が主流だったころから、100行表示できる環境もある今日まで、ずっと言われ続けている。
981デフォルトの名無しさん:2007/11/10(土) 00:44:15
あ、全部の話なのねw
そんなこと言い出すやつがいるところはカンマ演算子でも使いまくって横に書いてやればいいんだ
横も縦もルール範囲内ですよ?って
982デフォルトの名無しさん:2007/11/10(土) 01:12:56
>>977
1関数20行以内程度なら、例外が出ないということは無いが、全く出来ないというわけでもない
とは言え、時代に合わせて、40行位までは認めてよとは言うだろうけどな

20行以内なんてのは、どうせDOSのエディタで1画面分だろうしな
983デフォルトの名無しさん:2007/11/10(土) 01:18:43
40行でも少ないだろ。
100行くらいなら、まあ、許容できるかなって感じ。
984デフォルトの名無しさん:2007/11/10(土) 01:22:14
>>981
インデントを使わず、;で改行せずにやれば結構40行でも行けるかもな……

絶対やりたくないけど
985デフォルトの名無しさん:2007/11/10(土) 01:27:36
でも、980〜984のレスまでで30行ほどあるんだよな...
986デフォルトの名無しさん:2007/11/10(土) 01:29:37
C3プロジェクトのメソッドの平均行数は、6行だったかな。
言語はSmalltalkだが。
987デフォルトの名無しさん:2007/11/10(土) 01:37:48
コードコンプリートで紹介されているIBMの調査だと、200行以下の場合は、
行数が少ないほど、一行あたりのバグの件数が多かったとか。

100行のサブルーチンひとつより、10行のサブルーチン10個のほうがバグが多いらしい。
988デフォルトの名無しさん:2007/11/10(土) 01:39:56
そのメトリクスに意味があるとは思えん
989デフォルトの名無しさん:2007/11/10(土) 02:13:52
あくまでも統計だな
990デフォルトの名無しさん:2007/11/10(土) 02:27:25
>>987
なんか違和感を感じたので、よーく考えてみた

10行のコードの中の1行にパグがある場合、1/10のバグになる
100行のコードの中の1行にバグがある場合、1/100のバグになる

なんとなく、違和感の原因が判った気がする...
991デフォルトの名無しさん:2007/11/10(土) 02:32:32
>>990
そういう計算だったら「200行以下のサブルーチン」なんて但し書きはなくて、単純に、
「行数が大きければ大きいほどバグが少ない」って言えばいいことになる。
992デフォルトの名無しさん:2007/11/10(土) 02:43:27
>>991
200行を超えると、今度は複雑度が増えてバグも増えるってことだろ。
993デフォルトの名無しさん:2007/11/10(土) 02:50:27
10行の関数10個書いてバグが2個出るより、100行の関数書いてバグが1個のほうがいいじゃん。
そういう話じゃなくて?
994デフォルトの名無しさん:2007/11/10(土) 02:54:52
テストファーストやればいいんだよ。
感覚的にユニットテストしやすい大きさってのが分かってくるから。
995デフォルトの名無しさん:2007/11/10(土) 02:55:02
>>991
そうじゃないだろ
200行以下のサブルーチンの場合、行数が少ないほど、バグの量が多く見えるって事じゃないの?
996デフォルトの名無しさん:2007/11/10(土) 02:57:56
>>995
関数あたりじゃなくて、行数あたりだから関係ないんじゃないの?
997デフォルトの名無しさん:2007/11/10(土) 02:59:22
埋め
998デフォルトの名無しさん:2007/11/10(土) 03:01:09
999デフォルトの名無しさん:2007/11/10(土) 03:01:13
もう、このスレ、終わりでいいんじゃね?
1000デフォルトの名無しさん:2007/11/10(土) 03:01:46
賛成
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。