トップページ⇒tech
408コメント99KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/03/09(金) 14:02:01
自分は1行しか書かないつもりでも
あとでコードを足さなければならない事態なんていくらでもやってくる。
他人がきちんと中括弧補ってくれるかどうかはわからない。

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

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

みたいなのと

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

続行処理...

どっちがいいのか迷うんだけど、(無駄にブロック作りたくないから後者にしてるけど)
こういう制御構文の使い分けのケーススタディみたいなのが
詳しく載ってるサイトとか書籍ってないのかな。
0396デフォルトの名無しさん2009/09/17(木) 15:18:38
>>1
ジョークかと思ったら、本気みたい。
0397デフォルトの名無しさん2009/09/18(金) 09:51:54
>>395
それだけじゃよく判らんが、無駄にブロックを作りたくないなら
if (! 続行条件) {
 終了処理...
}
続行処理...
とするか
if (続行条件) {
} else {
 終了処理...
}
続行処理...
としてもいいよね。
0398デフォルトの名無しさん2009/09/19(土) 12:11:51
"else if"をひとつながりで一つのキーワードにしてみるのはどうだろう。
マイクロソフトならやりかねない
0399デフォルトの名無しさん2009/09/23(水) 11:58:27
ほかの言語にはelifつーものがあってだな
0400デフォルトの名無しさん2009/09/24(木) 00:02:47
if 〜 else if は if 〜 else と違って if に対して処理が対象ではないから、
勘違いする人のためには elif が有ってもいいかもね。ダサイけど。
0401デフォルトの名無しさん2009/09/25(金) 11:04:48
>398はどれへのレスなんだ?
少なくとも>395はelse ifの話なんて全然してないわけだが。
0402デフォルトの名無しさん2009/09/25(金) 14:46:22
>>394
書かれたコードを問題にしているのではない。
書いた阿呆の無能さを問題にしているのだ。
0403デフォルトの名無しさん2009/09/27(日) 18:19:52
eclipseで自分仕様のスタイルが設定できなくて困る
一度間違ってソースが全部整形されてしまって、ヒストリで元に戻そうにも
そのミスをやってしまったのがかなり前だと判明したため泣きながら手作業で修正した
0404デフォルトの名無しさん2009/09/27(日) 18:31:08
そこで bc ですよ。
0405デフォルトの名無しさん2009/09/28(月) 11:20:30
暫くindentを改造して使っていたが、思い通りにいかないことが増えてきて捨てた。
今は必要なときに必要なところだけエディタで整形している。
0406デフォルトの名無しさん2009/09/28(月) 21:29:02
ideやら整形ツールで対応できないような一般的でないスタイルは捨てるというのはどうだろうか。
0407デフォルトの名無しさん2009/09/30(水) 15:01:54
エディタを俺仕様にカスタマイズするのは大分前にやめた。
自分をエディタに合わせる方が楽。
0408デフォルトの名無しさん2009/11/23(月) 20:43:16
ガード節による入れ子条件記述の置き換え
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 つでいいが、そうでなければ使うべきではない
■ このスレッドは過去ログ倉庫に格納されています