952 :
デフォルトの名無しさん:2007/11/09(金) 02:22:36
コンパイラによって互換性が無いんだから ifdef の雨嵐でも仕方あんめぇ。
コンパイラが1種類しかない言語がウラヤマシイ。
対応がおかしくなければ、たいていのスタイルはおっけ。
贅沢言うなら、一人で書いたソースは、スタイルが統一
されているとうれしい。
どうせ整形してから読むし。
【×】
if (flag) {
flag = false;
} else {
flag = true;
}
【〇】
!flag;
【〇】
flag = !flag;
if foo = bar then begin
do_somthing
end else begin
do_other_things
end
>>952 互換性を保つのは別のレベルでやれと。
そういう意見じゃないか?
俺はあまりにも低機能なメソッドで構成されたプログラムは嫌だ。
1関数、1行〜5行みたいな。
飛びすぎて読むの疲れるし、push pop 多そうだな、と思って嫌気が差す。
>>957 インライン展開できないコンパイラをお使いですか?
>>958 引数が少なくて push pop しないまでも、レジスタへの代入はあるだろうな。
というか、そういうコードを書いてるのか?
>>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メンバにアクセスするのと何ら変わらない。
つまり、短い関数がスタックやレジスタや、その他のコストを余計に発生させるとは一概には言えないということ。
# 勿論、短い(深く再帰する)再帰関数が無駄にスタックを消費することは言うまでもないが。
あ、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は口だけ厨房だな。
>>963 まだその話してんのか・・・w
まさにシンタックスについて話したかったからBNFモドキで
書いたってことすら分かってないだろ、お前・・・。
君の狭いすき間にinsert()メソッドを適用させてくれ
すき間ってnullじゃね?
push_back()じゃダメ?
968 :
デフォルトの名無しさん:2007/11/09(金) 15:38:22
159 名前:デフォルトの名無しさん[sage] 投稿日:2007/11/06(火) 11:38:04
釣られてやるか。
少なくともBNFではシンタクスしか理解できんわな。
セマンティクスはBNFでは表現できないし、理解できない。
ソースを読めるかどうかは、前提となる技術や理論や知識を読み手が持っているか
どうかにかかっているが、ソースがモデル化している概念や仕様に関する
知識が零である場合、ソースを読んでそれを再構成しようとするのは非常に
難しくなる。それが複雑であればあるほどに。
>>155-156は口だけ厨房だな。
>>853a && (foo(), 1) || (bar(), 1) && (hoge(), 1);は
a=1の場合、a && (foo(), 1)が真になるからここで処理を終了するという風になっているのでしょうか?
知らなくていい。
書くな、そんな糞コード。
短絡評価でググれ
>>971 そんなのがあるのですね・・・
入門書にかかれていないのって結構多いですね。
973 :
デフォルトの名無しさん:2007/11/09(金) 18:02:34
糞コードと言うか、もう”ウイルス”と言っても過言ではない。
974 :
デフォルトの名無しさん:2007/11/09(金) 18:07:56
訂正した方が善いのでしょうか?
`python-lib_text.に`SyntaxError.が…(+ФyФ)!ですが動作する物ですね…
975 :
153:2007/11/09(金) 18:36:18
>>934 DOSでプリントアウトできて、
ブラウザにドロップしてもインデントが乱れなくて、
E-Mailでのreplyにも耐える
ようにすると8タブで72文字になってしまうw
変なクッキー食ったままだったorz
>>934 サブルーチンが20行以内とか、まともにコーディングしたことないやつのたわごとだろ。
1〜5行程度の関数って結構書くけどなぁ・・・
全部20行以内と、1行の関数を書くことがあるのとはぜんぜん違う。
あと、よくいるのが「一画面以内」だな。
画面が20〜25行が主流だったころから、100行表示できる環境もある今日まで、ずっと言われ続けている。
あ、全部の話なのねw
そんなこと言い出すやつがいるところはカンマ演算子でも使いまくって横に書いてやればいいんだ
横も縦もルール範囲内ですよ?って
>>977 1関数20行以内程度なら、例外が出ないということは無いが、全く出来ないというわけでもない
とは言え、時代に合わせて、40行位までは認めてよとは言うだろうけどな
20行以内なんてのは、どうせDOSのエディタで1画面分だろうしな
40行でも少ないだろ。
100行くらいなら、まあ、許容できるかなって感じ。
>>981 インデントを使わず、;で改行せずにやれば結構40行でも行けるかもな……
絶対やりたくないけど
でも、980〜984のレスまでで30行ほどあるんだよな...
C3プロジェクトのメソッドの平均行数は、6行だったかな。
言語はSmalltalkだが。
コードコンプリートで紹介されているIBMの調査だと、200行以下の場合は、
行数が少ないほど、一行あたりのバグの件数が多かったとか。
100行のサブルーチンひとつより、10行のサブルーチン10個のほうがバグが多いらしい。
そのメトリクスに意味があるとは思えん
989 :
デフォルトの名無しさん:2007/11/10(土) 02:13:52
あくまでも統計だな
>>987 なんか違和感を感じたので、よーく考えてみた
10行のコードの中の1行にパグがある場合、1/10のバグになる
100行のコードの中の1行にバグがある場合、1/100のバグになる
なんとなく、違和感の原因が判った気がする...
>>990 そういう計算だったら「200行以下のサブルーチン」なんて但し書きはなくて、単純に、
「行数が大きければ大きいほどバグが少ない」って言えばいいことになる。
>>991 200行を超えると、今度は複雑度が増えてバグも増えるってことだろ。
10行の関数10個書いてバグが2個出るより、100行の関数書いてバグが1個のほうがいいじゃん。
そういう話じゃなくて?
テストファーストやればいいんだよ。
感覚的にユニットテストしやすい大きさってのが分かってくるから。
>>991 そうじゃないだろ
200行以下のサブルーチンの場合、行数が少ないほど、バグの量が多く見えるって事じゃないの?
>>995 関数あたりじゃなくて、行数あたりだから関係ないんじゃないの?
埋め
梅
もう、このスレ、終わりでいいんじゃね?
賛成
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。