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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2006/03/18(土) 14:45:06
>>951
残り50切ってから気付いたの?www
953デフォルトの名無しさん:2006/03/18(土) 14:47:10
ということにしたいのですね
954デフォルトの名無しさん:2006/03/18(土) 14:48:28
>>948
客は言語仕様を理解してるかどうかあやしいからな。
仕様書に沿ってないとなに言われるやら…
955デフォルトの名無しさん:2006/03/18(土) 14:51:14
>>946
Cなら「もし価格が0でなければ」だからなんら問題なし。
956デフォルトの名無しさん:2006/03/18(土) 14:55:35
それがCのイディオム。
好きではないけれど。
957デフォルトの名無しさん:2006/03/18(土) 15:09:53
priceがunsinged intのとき
if(price>0){を、どうせ同じだからと言って、
if(price){と書くの?
958デフォルトの名無しさん:2006/03/18(土) 15:14:19
俺はそう書かない。
959デフォルトの名無しさん:2006/03/18(土) 15:15:39
>>957
というか 
price欄==0 をその商品が無いとか、価格が決まっていないというような事に使ってるのだろう

基本的に0をマジックナンバーにするという発想なんだろうけど、
だったら配列も 1ベースにすりゃ良かったのになあと思うんだよね。
960デフォルトの名無しさん:2006/03/18(土) 15:20:47
それはお前だけ
961デフォルトの名無しさん:2006/03/18(土) 15:22:02
そこら辺は石屋さんのせいだからなあ。そっちに文句言ってくれ。
Cの設計思想は高級アセンブラで、石の都合に合わせて作られてるんだから。
962デフォルトの名無しさん:2006/03/18(土) 15:26:25
たぶん ゼロで終端した文字列 というのから出発したんだと思う。
それをポインタでこう書けばスマートだろという方向で 0かどうかなんて設計にしたんだろ。

「どうだpascalのサイズ付文字列よりスマートで格好いいだろ? 255文字なんて制限もないし」

みたいに
963デフォルトの名無しさん:2006/03/18(土) 16:05:44
>961
どうして石の話になるんだ?
964デフォルトの名無しさん:2006/03/18(土) 16:22:41
0の時に条件分岐も、配列のインデックスが0からなのも、石の都合に合わせた結果だろ?
965デフォルトの名無しさん:2006/03/18(土) 16:30:22
CPUの殆どは
 比較結果でZフラグが立ち、Zフラグで分岐するかスキップする
  0 と比較して分岐する
のどちらかがあるから0と比較するのは意味があるようだが、
が、大抵は同じコストで負数かどうかでも分岐出来る 負数がfalseでも良かったのでは?

配列については1ならバイトサイズのオフセットをコンパイル時に入れれば良く
実際、pascalなどは好きに出来て、コードを見れば静的に解決されており効率は落ちていない。
966デフォルトの名無しさん:2006/03/18(土) 16:33:11
石とか言うやつの書くコード。 寺内貫太郎かよ。
967デフォルトの名無しさん:2006/03/18(土) 17:59:19
プライスレス
968デフォルトの名無しさん:2006/03/18(土) 18:13:09
>>965
なんとなく読みにくい日本語だな
969デフォルトの名無しさん:2006/03/18(土) 18:18:30
>>868 だって、細かく書かないと そうじゃないCPUもあるってすぐ書かれるから
970http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 18:43:25
TextSS の64bit化おながいします

もしくは64bitにネイティブ対応した置換ソフトないですか?
971デフォルトの名無しさん:2006/03/18(土) 19:35:35
ぱっと見て「マルチだなぁ」と思う投稿
972デフォルトの名無しさん:2006/03/18(土) 19:49:38
マルチというより荒らしだろ。
973デフォルトの名無しさん:2006/03/18(土) 22:16:10
>>965
Basic言語の中には真値が-1(全bit1)のものもあるから負数がfalseはまずいっしょ。
974デフォルトの名無しさん:2006/03/18(土) 22:23:25
>>934
Cでも配列とポインタが同じものと思われると困るのですが
975デフォルトの名無しさん:2006/03/19(日) 00:06:55
Cすら使えないやつのひがみだからほっとけ。
976デフォルトの名無しさん:2006/03/19(日) 00:46:17
>>970
64bitネイティブに対応した置換? えと、たとえば俺の今使っている
Athlon 64 のマシンの Linux で動く sed とか?
977デフォルトの名無しさん:2006/03/19(日) 00:46:51
awk とか Perl とか。
978デフォルトの名無しさん:2006/03/19(日) 01:48:05
>>976
そいつ、いろんなスレに>>970をマルチポストしまくってるからレスしても見ないと思うよ。
979デフォルトの名無しさん:2006/03/19(日) 02:32:27
if( price > 100) .. は書くけど
if((price > 100) == true) .. とは書かない。
if の中では論理比較してることが自明だから。

done が bool であるならば
if(done) .. は書くけど
if(done == true) .. とは書かないようにしてる。
bool はそれ自体で論理式だから。

プロジェクトの規約で後者が推奨されたことはないが
そう書けと言われればそれに従う。
980デフォルトの名無しさん:2006/03/19(日) 06:57:33
省略可能なものはすべて省略する。
コメントさえもだ。
981デフォルトの名無しさん:2006/03/19(日) 07:32:54
ならば貴様の存在さえも私が消し去ろう
982デフォルトの名無しさん:2006/03/19(日) 08:17:38
>>979
if (price > 0) はどうなのかと…。
983デフォルトの名無しさん:2006/03/19(日) 08:43:52
>>974では const で固定されたポインタAと 配列 B[] との違う例をどうぞ
984デフォルトの名無しさん:2006/03/19(日) 08:48:29
>>983
なんでconstで固定されたって条件が増えてるの?
985デフォルトの名無しさん:2006/03/19(日) 08:55:07
>>984
そりゃルールは自分の有利なように変えるもの
986デフォルトの名無しさん:2006/03/19(日) 08:58:13
次スレは?
987デフォルトの名無しさん:2006/03/19(日) 09:01:16
>>985
そりゃそうなんだけどさ
ポインタ変数つくって[10]ってアクセスしたら落ちるよな? C言語うろ覚えだけど
constとか関係あるのかな? と思って
988デフォルトの名無しさん:2006/03/19(日) 09:25:02
意味がわかるように書いてくれませんか?
989デフォルトの名無しさん:2006/03/19(日) 09:25:21
>>986
最適化により事前に削除されますた。
990デフォルトの名無しさん:2006/03/19(日) 10:03:48
>>983
const int *a;
int b[16];

void f(const int **);
void g(int (*)[16]);
このときf(&a)とg(&b)はコンパイルできるが、f(&b)とg(&a)はコンパイルできない。
991デフォルトの名無しさん:2006/03/19(日) 11:46:11
>>990
型が違うからな。

ていうか、誰か2のスレ作れ。
もうあるのか? Linuxのおちゅ〜しゃでお気に入り
しか見てないから他のスレの情况分からないが。
992デフォルトの名無しさん:2006/03/19(日) 11:53:42
>>979

> done が bool であるならば
重要な一言でましたね。

> if(done) .. は書くけど
こう書くにはdoneがboolであると知っていなければならない。
だけど、さっきの一言でわかるように、この行を見ただけでdoneがboolなのかはわからない。

> if( price > 100) .. は書くけど
これはこの行を見ただけでifの中がboolだと明確。

> if((price > 100) == true) .. とは書かない。
だからこうは書かない。当然。

> if(done) .. は書くけど
だけど、この行はこれを見ただけではわからない。

> if(done == true)
だからこう書くほうがいい。これはdoneがboolであることをこの行で明確化するのが目的。
目的を考えると、なにかと言ってくる、if((done == true) == true) を使っての反論は的外れ。
("明確でないもの"を明確にするのと、"明確になっているもの"を明確にするのとでは、意味がぜんぜん違う)

993デフォルトの名無しさん:2006/03/19(日) 12:06:48
>>992
言ってることは分かるのだけど
if(done)は明確である、つまり真偽値以外なら全部比較しろ という方がいいな
Cなら書けちゃうからしょうがないんだけどさぁ
994デフォルトの名無しさん:2006/03/19(日) 12:06:51
boolであることを明確にする目的は?
995デフォルトの名無しさん:2006/03/19(日) 12:49:14
>>992
むしろ if (done == true) と書かれるとtrueとfalse以外の値をとりうる整数変数で、
非0でなくtrueと同値の場合だけを処理したいのかと勘ぐってしまいますが?
996デフォルトの名無しさん:2006/03/19(日) 12:51:28
>>994
コードは人間が読むものです。
997デフォルトの名無しさん:2006/03/19(日) 12:52:49
>>995
? 整数型とtrue/falseを比較すれば警告出るじゃん。
998デフォルトの名無しさん:2006/03/19(日) 12:54:45
埋め
999デフォルトの名無しさん:2006/03/19(日) 12:56:30
1000デフォルトの名無しさん:2006/03/19(日) 12:57:02
>>983
例えば

char* const A = "abcde";
char B[] = "abcde";

この場合Aの指してる文字列は書き換え可能領域にあるとは限らない。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。