1 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 14:02:01 ] 自分は1行しか書かないつもりでも あとでコードを足さなければならない事態なんていくらでもやってくる。 他人がきちんと中括弧補ってくれるかどうかはわからない。 1行文だろうがなんだろうが 最初から中括弧をつけるクセをつけろ
340 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 00:00:15 ] >337 なぜに?
341 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 02:59:30 ] elseifがないと if () { } else { if () { } else { if () { } else { if () { } else { } } } } みたいにどんどんネストが深くなる。
342 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 03:00:38 ] {} を省略できるなら if () { } else if () { } else if () { } else if () { } else { } みたいに書けるんだけど
343 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 03:06:05 ] 強制する←→省略不可だからそういうのも認めないって話じゃねーの。
344 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 03:27:46 ] というか、>>1 の主張を強制するのならelse ifという慣用表現も禁止で >>341 みたいにきちんとif文をネストするような表現とすることを 強制するべき。 >>342 式を禁止するというか非推奨にするのは、それなりに根拠がある。 多くの場合、>>342 の形式の場合、ロジックが練れていなく、 バグが多い割に修正が難しいから。経験的に言って>>341 式のほう が、バグも少なくなり、バグが出ても修正しやすいような気がする。 結論的に言えば>>342 式を禁止するのは一定の意味を持つが >>1 を強制するのはやり過ぎかも。
345 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 04:11:17 ] >>342 禁止ですら、行き過ぎという感があるのに >>1 強制なんてあり得ない
346 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 13:36:09 ] なる。 それなら俺は {} 強制で else if 容認かな。 自分のバグ元としては {}なしのif より 比較に = 使っちゃう方が多いけど。 だから、エディタで[^><=]=[^=] を赤くなるようにしてる。
347 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 15:32:25 ] caseで
348 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 17:42:41 ] 多くの場合、経験的に言って、根拠があると言っているわりに>>344 は主観推論しか言っていない気がする。
349 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 21:13:28 ] case式が強力な言語ならいいんだけどCだと定数との比較しかできない
350 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 12:32:49 ] >>342 のようなコードってさ、 if (A) { い } else if (B) { ろ } else if (C) { は } else { に } ってさ、 if (A) { い } if (!A && B) { ろ } if (!A && !B && C) {は} if (!A && !B && !C) {に} ということなんだけど、その条件が分散して書かれているから、わかりにくいのよね。 ただのswitch-case的な使い方だと誤解して順序を変えてしまうと、意味が変ってしまう。
351 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 23:41:42 ] if(id == typeA && ){} else if (id == typeB &&){} って書く奴いるけどなんでswitch文使わないの バカなのねぇバカなの?
352 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 09:16:07 ] >>351 妙な && が気になるが、if で書けば ・コードの行数が少なくて済むので見やすい ・スコープがしっかり認識できて良い ・シンタックスハイラトや自動インデントなど IDE によっては switch の対応が微妙 ・if の方がコンパイラが最適化しやすい条件になっている とかとか。分かってて書いている人なら、別に良いと思うけど?
353 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 22:17:54 ] if(id == typeA) if(id == typeB) と if(id == typeA) else if(id == typeB) 同じ意味だよね?
354 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 01:40:46 ] >>353 if (id == typeA) { ... id = typeHoge; } の場合は?
355 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 12:06:12 ] >>353 idがconstなら同じ。そうでないなら、>354の可能性がある。 例えば、この関数では全く同じ。 void func(const int id) { if (id == typeA) { funcA(); } if (id == typeB) { funcB(); } }
356 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 12:18:01 ] つか、同じじゃないように見えるんだけど? if(id == typeA) if(id == typeB) って、インデント付けると if(id == typeA) if(id == typeB) だよな? 更に括弧も付けると if(id == typeA) { if(id == typeB) { } } だよな?
357 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 13:00:09 ] >>356 >353が>351を踏まえて書いたかどうかだな。 >353が>351を踏まえずに>356の意味で書いたのだとしたら、 if (id == typeA) if (id == typeB) は(typeAとtypeBが等しいと言う無謀な前提を仮定しない限り) if (0)と同じになってしまう。
358 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 18:07:30 ] べつに無謀な前提ではないんじゃないか typeA != typeBでもid == typeAかつid == typeBだったりすると怖いけど
359 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:42:52 ] >>358 この流れでその前提は、余りに阿呆過ぎる。 最早>351も>353もいないから真意は不明だが。