コーディングトラブルの約70%はif文などでの{}省略

このエントリーをはてなブックマークに追加
359デフォルトの名無しさん:2008/10/09(木) 12:42:52
>>358
この流れでその前提は、余りに阿呆過ぎる。
最早>351も>353もいないから真意は不明だが。
360デフォルトの名無しさん:2009/04/08(水) 19:34:44
ダメ
361デフォルトの名無しさん:2009/08/26(水) 18:28:00
{}をつけないせいで失敗するほど不注意なら{}をつけたせいで失敗する事もありそう
362デフォルトの名無しさん:2009/08/31(月) 11:56:11
こういうバカなやつもプログラム書いてるのが問題なんだよね
363デフォルトの名無しさん:2009/09/01(火) 02:47:11
364デフォルトの名無しさん:2009/09/01(火) 07:59:27
凡人と初心者は{}付けとけば問題なし。
365デフォルトの名無しさん:2009/09/01(火) 12:07:22
初心者ほど{}を省略するからな。
そして成長しないまま{}を省略し続けると。
366デフォルトの名無しさん:2009/09/02(水) 02:31:00
{}を付ける癖がつくと、すべてのロジックをそのルーチンの中に
詰め込み、使い回せる関数だけを外側に出そうとする癖がつく?
本当に使い回せるかどうかの判断は実は相当のベテランでも
ない限り難しいにも関わらず。

{}を付けない癖がつくと、すべて下請けに回そうというコード
になりがち。最初は調子が良いが硬直なコードになりがちなので
仕様変更時に泣きを見る結果になりやすい?
367デフォルトの名無しさん:2009/09/02(水) 19:45:17
初心者は何度も書き換えて、コードが増えたり減ったりを繰り返す。
構造もあやふやだろうし、{}無しで使ってコケる。それも勉強だろうけど、
{}を付けて処理範囲を明確にすれば、最低限コケることは無くなる。
{構造化を意識させることもできる(その地点からはだいぶ先の話だけど)。
368デフォルトの名無しさん:2009/09/03(木) 23:09:26
>>365
上級者はふつーに省略して、省略するなって主張してるのって、2chの名無しとか
素人くさいプログラム系のブログってイメージ。
369デフォルトの名無しさん:2009/09/04(金) 02:03:58
オフサイドルール大勝利
370デフォルトの名無しさん:2009/09/04(金) 20:36:44
っていうか{}省略で起こる問題って具体的にどんなことがあるんだ?
if(){
func1();
}
else
func2();

ふつうにインデントしてれば何も間違えよう無いし{}省略で
間違えたことなんて一度もねーぞ。
371デフォルトの名無しさん:2009/09/04(金) 20:51:54
>>1本人のコーディングトラブルの 70% だそうなので
皆さんは気にしなくていいですよ
372デフォルトの名無しさん:2009/09/04(金) 23:38:11
俺は省略しないんだが、省略したら今の三倍もバクが増えるとは
とても思えないんだが。
373デフォルトの名無しさん:2009/09/05(土) 08:52:10
さすがに70%はありえないな。
{}省略で間違えることはあまり無い。
ただ、else節以降でインデントを間違えてるソースを見た事は2回ぐらいある。
あれは悩ましいからやめてくれ。

初心者のうちは間違いようの無いシンプルなルールで書いて、
他の部分に頭を使った方がいい。
もちろん天才とベテランは別。
374デフォルトの名無しさん:2009/09/08(火) 09:41:31
>>372
バグをバクとtypoするようなレベルの奴が言っても
375デフォルトの名無しさん:2009/09/08(火) 12:26:48
ワロタ
376デフォルトの名無しさん:2009/09/08(火) 14:08:44
  ,ィ─--、   ,ィ─--、   ,ィ─--、
  (_/ (ヽ'ヽ。 (_/ (ヽ'ヽ。 (_/ (ヽ'ヽ。
  ヽ ゛д ノ  ヽ ゛д ノ  ヽ ゛д ノ  <三倍に増えるぞな!
  ノ ∪ |   ノ ∪ |   ノ ∪ |
  ,ゝ、  .ノ   ,ゝ、  .ノ   ,ゝ、  .ノ
   |_(     |_(      |_(
377デフォルトの名無しさん:2009/09/08(火) 22:26:47
2chの書き込みのタイポごときで揚げ足取ったつもりで得意顔?
みっともね。
378デフォルトの名無しさん:2009/09/09(水) 09:35:16
>>377
手がすべったtypo、意図的なものとして定着したtypoならそうかもしれんが、明らかに違うよな。本人乙。
379デフォルトの名無しさん:2009/09/09(水) 11:13:43
>>378
JISカナ配列使いかも知らん。
380デフォルトの名無しさん:2009/09/09(水) 11:59:17
そもそもコーディング時のミスの話してる時に書き間違いの書き込みしてるんだから
間違いは起こりうると証明してるようなもん。
381デフォルトの名無しさん:2009/09/09(水) 12:02:32
>>380
>そもそもコーディング時のミスの話してる時
「{}を省略することによる」という前提外すなよ。
382デフォルトの名無しさん:2009/09/09(水) 14:42:40
世の中qwertyでローマ字入力ばかりだと思ってんのかよ。
383デフォルトの名無しさん:2009/09/10(木) 09:22:19
カナ入力するプログラマなんて死ねばいいけどね
384デフォルトの名無しさん:2009/09/10(木) 11:42:18
>>383
自分の前に使ってた人がカナロックしっぱなしで
うっかり「トントカイモ」とか入れちゃったとか、そういう被害にでも遭ったのか?
385デフォルトの名無しさん:2009/09/10(木) 22:26:26
懐かしいな、トントカイモ。
386デフォルトの名無しさん:2009/09/12(土) 16:20:26
有限会社ハニリイトってのがあってちょっとクスッときた
387デフォルトの名無しさん:2009/09/14(月) 04:05:51
カナ無刻印キーボード使ってるんで面白さがわからん。
解説してくれ。
388最後の二つはNECとNTT:2009/09/14(月) 09:17:47
>>387

トントカイモ→system
ハニリイト→files

パソ通の時代は、みんな覚えていたもんさw
ミイソの98でミミカ経由で繋いでたからね。
389デフォルトの名無しさん:2009/09/14(月) 14:20:41
ミカカでしょ
リニトカとかスナミとかもやったなあ
390388:2009/09/14(月) 15:18:38
おー、typoだ。失敬。
391デフォルトの名無しさん:2009/09/17(木) 11:51:39
俺も一行なら省略してたけど、別にそれでトラブルったことはないな。
それより、結局処理追加する必要があると分かった時に挿入したり、
逆に一行でいいと分かった時に整合性のために削除してることが多いのに気付いて
めんどいから最近は {} 非省略派になった。
392デフォルトの名無しさん:2009/09/17(木) 13:44:44
俺の場合は{}を使ってifやループでやる処理をぱっと見て分かるように囲ってる。
if(hogehoge){
  ...;
  ...;
}
とか
if(hogehoge){ ...; }
とか。
ブレース使っても短い処理なら1行で記述できるし省略の必要性は全く感じてない。
393デフォルトの名無しさん:2009/09/17(木) 13:52:53
ifと括弧の間に空白のないコードの70%は糞。
ときには、条件に一致した場合の処理を同一行に書く、上級糞コードも。
394デフォルトの名無しさん:2009/09/17(木) 14:04:44
フォーマッター使えばどうにでもなるような事をグジグジ言ってる暇があるなら
もっとマシなコード書けよ。
くっだらねえ。
395デフォルトの名無しさん:2009/09/17(木) 14:54:09
確かに、スペースポリシーって些細なようでその人の性格が出るな。
統一感がなかったり、合理性がない書き方をする奴は確かにコード自体も質が悪い傾向にある。
ところでたまに

if (続行条件) {
 続行処理...
} else {
 終了処理...
}

みたいなのと

if (終了条件) {
 終了処理...
}

続行処理...

どっちがいいのか迷うんだけど、(無駄にブロック作りたくないから後者にしてるけど)
こういう制御構文の使い分けのケーススタディみたいなのが
詳しく載ってるサイトとか書籍ってないのかな。
396デフォルトの名無しさん:2009/09/17(木) 15:18:38
>>1
ジョークかと思ったら、本気みたい。
397デフォルトの名無しさん:2009/09/18(金) 09:51:54
>>395
それだけじゃよく判らんが、無駄にブロックを作りたくないなら
if (! 続行条件) {
 終了処理...
}
続行処理...
とするか
if (続行条件) {
} else {
 終了処理...
}
続行処理...
としてもいいよね。
398デフォルトの名無しさん:2009/09/19(土) 12:11:51
"else if"をひとつながりで一つのキーワードにしてみるのはどうだろう。
マイクロソフトならやりかねない
399デフォルトの名無しさん:2009/09/23(水) 11:58:27
ほかの言語にはelifつーものがあってだな
400デフォルトの名無しさん:2009/09/24(木) 00:02:47
if 〜 else if は if 〜 else と違って if に対して処理が対象ではないから、
勘違いする人のためには elif が有ってもいいかもね。ダサイけど。
401デフォルトの名無しさん:2009/09/25(金) 11:04:48
>398はどれへのレスなんだ?
少なくとも>395はelse ifの話なんて全然してないわけだが。
402デフォルトの名無しさん:2009/09/25(金) 14:46:22
>>394
書かれたコードを問題にしているのではない。
書いた阿呆の無能さを問題にしているのだ。
403デフォルトの名無しさん:2009/09/27(日) 18:19:52
eclipseで自分仕様のスタイルが設定できなくて困る
一度間違ってソースが全部整形されてしまって、ヒストリで元に戻そうにも
そのミスをやってしまったのがかなり前だと判明したため泣きながら手作業で修正した
404デフォルトの名無しさん:2009/09/27(日) 18:31:08
そこで bc ですよ。
405デフォルトの名無しさん:2009/09/28(月) 11:20:30
暫くindentを改造して使っていたが、思い通りにいかないことが増えてきて捨てた。
今は必要なときに必要なところだけエディタで整形している。
406デフォルトの名無しさん:2009/09/28(月) 21:29:02
ideやら整形ツールで対応できないような一般的でないスタイルは捨てるというのはどうだろうか。
407デフォルトの名無しさん:2009/09/30(水) 15:01:54
エディタを俺仕様にカスタマイズするのは大分前にやめた。
自分をエディタに合わせる方が楽。
408デフォルトの名無しさん
ガード節による入れ子条件記述の置き換え
1. メソッドに正常ルートが不明確な条件付振る舞いがある
2. 特殊ケースすべてに対してガード節( メソッド内で、処理がメインロジックに到達するの
を防ぐためのコード) を使う
double getPayAmount() {
 double result;
 if (_isDead) result = deadAmount();
 else {
  if (_isSeparated) result = separatedAmount();
  else {
   if (_isRetired) result = retiredAmount();
   else result = normalPayAmount();
  }
 }
 return result;
}
 ↓
double getPayAmount() {
 if (_isDead) return deadAmount();
 if (_isSeparated) return separatedAmount();
 if (_isRetired) return retiredAmount();
 return normalPayAmount();
}
出口が1 つだけというルールは本当は有益ではありません。
1つにすることでメソッドが明瞭になるならば出口は1 つでいいが、そうでなければ使うべきではない