[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 09/18 12:25 / Filesize : 67 KB / Number-of Response : 360
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 14:02:01 ]
自分は1行しか書かないつもりでも
あとでコードを足さなければならない事態なんていくらでもやってくる。
他人がきちんと中括弧補ってくれるかどうかはわからない。

1行文だろうがなんだろうが
最初から中括弧をつけるクセをつけろ

191 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:13:31 ]
lint用のコメントみたいだなw

192 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:30:30 ]
>>1
プログラマは信号は守るべきだが
小石を取り除くかどうかはプログラマしだいだ
尊敬するプログラマのソースを読め

193 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:35:44 ]
>>192
尊敬するプログラマはみんな省略してませんでした

194 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:41:49 ]
漏れその昔、ビル・アトキンソンをめちゃくちゃ尊敬してたが、
C系のコードは書いてたのかどうか知らん。

195 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 23:10:46 ]
defineで閉じてるのは軽くいらっとさせるね
if () {
...
#if 1
} else
#endif
...

}
GNU関連は関数なんかもこれで閉じてくるよね




196 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 23:22:54 ]
>>195
仕事でそんなコード書いてるヤツ見たら、思わずはり倒しちゃいそう。

197 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 00:32:13 ]
return_type
func_name(
 arg_type arg
)
{
}
はダメダメってことですね。

198 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 01:23:06 ]
>>197
なんで?

199 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 01:47:52 ]
>>172 >>177



200 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 02:07:20 ]
>>197
俺はよくそのスタイルで書く衝動にかられるけど、
引数リストの行末がカンマで統一できないのが
嫌でいつも思いとどまる。

201 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 08:01:41 ]
> 引数リストの行末がカンマで統一
そ、最後ね

arg_type1 arg1,
arg_type2 arg2,
arg_type3 arg3

最後のarg3だけカンマなしでないとエラー。よく引っかかる。
配列の初期化子は最後のカンマOKなのにね。

202 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 14:22:14 ]
>>187
C++ 使ってると C の頃の感覚が麻痺して
抵抗なく string 返したりもできるようになる筈w

203 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 15:09:03 ]
オーバーヘッドなんて高が知れてるし、参照もポインタも使わずに
構造体やクラスを平気で返しちゃうぜ

204 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 20:35:18 ]
C++クックブックって本は、コンテナクラスは 全部引数でやり取りしてた。

205 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 21:53:09 ]
何でスレ伸びてるの?

206 名前:デフォルトの名無しさん [2007/03/12(月) 23:23:25 ]
>>76
それおまえさんが強要して出させたんじゃないか?

207 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 00:04:04 ]
>>206
スレタイの数字の話じゃねえの?

208 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 01:41:45 ]
ぶら下がりelseに起因するbug発生回数は一回
その他の中括弧の省略に起因するbug発生回数は零回

209 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 02:09:20 ]
どんな書き方をしてもバグを生み出さないソースを書けばいいだけ
どんなにファクターがありそうでも最終的にそこに原因を求めるのは結局責任転嫁だ



210 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 02:10:42 ]
読みやすい書き方はそれだけでバグの抑制になる

211 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 05:57:35 ]
インクリメントとかシンプルな処理なら{}なんて使わなくても
使うのは数行に渡る見込みがあるか後々まで残す部分くらいだな

212 名前:デフォルトの名無しさん [2007/03/13(火) 08:01:55 ]
やはりbegin〜endの勝利だな

213 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 09:26:05 ]
Python最強ということで

214 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 09:35:13 ]
schemeもええで

215 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 09:48:34 ]
ソレより、 && || をif文中で使ってる場合の方が多いように思うけどな

特に俺が書いた時に無かったのに後から何気なく追加されたような場合、たいてい間違ってるゾ!

216 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 11:02:09 ]
70%はそっちの方だね。

217 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 11:08:56 ]
まだ && ||を2行に別けて書く人はミスが少ない気がする

if( ( hoge == hage )
&& ( hige ) ){
}
みたいに

218 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 11:12:50 ]
こういうのは程度の問題で、複雑な式は分けて書いた方が理解しすいだろうが、
シンプルな式まで徹底して分ける事に決めちゃったりしたら、かえってコードの意図がわかりにくくなると思う。
{}の省略についても同様。

219 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 11:39:36 ]
if修飾子が使える言語(PerlやRuby)だと、やることが1つなら修飾子にして
おいて、増えたら複文支配のifに書き換える、という使い分けが出来るな。




220 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 13:07:20 ]
むしろ後置ifが使えるなら、
前置ifでの単文修飾は不可能にすべきじゃなかろうか。

221 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 13:16:18 ]
perlはそうだね。

222 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 14:06:40 ]
俺はPBP6.2の通りに後置ifはnext, last, redo, return, goto, die, croak, throwでのみ使うようにしてる。
メンテ不要な書き捨てプログラムはこの限りでないがw

223 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 22:45:43 ]
if文より型の変換とか値入れてない変数とかの方がやばい気がする。

224 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 22:46:14 ]
全ての分岐をgoto文で書いてやる

225 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 23:02:08 ]
gotoが必要なのは多重ループを抜けるときだけだよな。

226 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 23:14:43 ]
ttp://gedo-style.net/g/?v=361721&d=d.jpg

227 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:27:29 ]
多重ループは関数化で対処

228 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 04:07:30 ]
gotoはエラー処理と字句解析のハードコード。

229 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 04:48:53 ]
if()
{
;
}

↑これは異端か?



230 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 05:29:00 ]
異端もクソも、なぜ if() の中を ! で否定しないよ

231 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 06:53:59 ]
頭ごなしに否定するのはよくない

232 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 10:31:18 ]
ケツで否定してやる。

{ ; } unless hoge;

233 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 10:41:26 ]
{ } を付けたら女の子にもてるようになりました

234 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:09:17 ]
スーパー括弧閉じ


235 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:26:03 ]
括弧閉じはコッカって言わないか?

236 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 19:21:20 ]
通じるけど恥ずかしいから自分では言わない。

237 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 16:12:21 ]
>>235
それは局所的にしか通じないだろう。

238 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 16:57:00 ]
sh 系だとそんなだよな。

esac ってなんだろと。

239 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 17:06:36 ]
fi はまあ想像つくけどなw



240 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 22:54:36 ]
言語規格の中で if() ; 形を if() { ; } の省略形であるとしている
言語はどんなものがありますか。

241 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 23:11:15 ]
そんなのあるのか?

242 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:24:53 ]
お前らエディタのソース整形機能とか使ったことなさそうだな

243 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:25:18 ]
COBOLにそんな機能ねーよ

244 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:43:26 ]
ソース整形が必要なほどのクソコードに出会ったら
とりあえず腹をくくることにしている。

245 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:51:37 ]
おまえはソース整形について誤った観念を抱いているのではないか

246 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 13:52:38 ]
ソーッスねぇ

247 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:27:11 ]
ソース整形したらテスト全部やり直しなんだけどそれついてはどうなの?

248 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:29:25 ]
>>247
なんで?

249 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:33:05 ]
>>248
あ?遊びでやってんじゃねーんだぞ



250 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:34:46 ]
>>247
kwsk

251 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:37:04 ]
バイナリがかわんなきゃよくね?
or
テストケース再実行すりゃいいじゃん

好きなほうで

252 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:40:18 ]
テストする前に整形すればいいだけじゃん

253 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:41:43 ]
リポジトリにコミットするとき、自動的にソース整形すりゃよくね?も追加

254 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:45:04 ]
>>247は自動化したテストですらとんでもなく時間を食う
ちょー大規模プロジェクトをやってるんだろう。


255 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:49:30 ]
>>251
>バイナリがかわんなきゃよくね?
これは納得できる

>テストケース再実行すりゃいいじゃん
手動のテストケースもあるから無理
仮に全自動であったとしても時間無駄にしてんじゃねーよ

>>252
ソース整形しただけの個所までテストするのが時間の無駄

>>253
改行した瞬間に自動的にソース整形するVBが最適解か……orz

256 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:53:35 ]
やはりpythonが・・・

257 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 14:54:49 ]
>>255
時間かかるテストは、夜走らせとけよ

エディタorIDE

リポジトリ(コミット時にソース整形)

CI(夜間に自動ビルド+テスト)

これ大抵の言語でいけるだろ。

258 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 16:57:26 ]
バイナリが変わるようなコード変換はもはや整形じゃないと思う

259 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:12:11 ]
>>175
そんなの^(unsigned)*[int|char|short|float|double] [a-Z]+[0-9|a-Z]*\(とかで検索すればいいんじゃね?




260 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:20:04 ]
無理やりこうやればできるとかいう話じゃなくってさ。
viでは検索が日常的なカーソル移動手段のひとつなんだよ。

261 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:34:57 ]
>>259
ぜんぜんだめ。おはなしにならない。

262 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:51:22 ]
C言語は文脈自由文法だから正規表現で完璧にマッチさせるのは不可能

263 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 05:35:27 ]
>>262 こういう話疎いので、初心者にも解るように解説してください。

264 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 07:02:14 ]
>>263
コンパイラの本でも嫁

265 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 11:30:39 ]
突然舞い上がったようなレスだな。>>262
そもそもどのレスに依存するのだろう。

266 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 11:33:56 ]
259のあたりだろ。

267 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 11:41:31 ]
>>265>>262を全く理解できなかったということだけはわかった。

268 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 11:50:27 ]
まあ規約ガチガチなのはそのせいだしな

269 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:40:30 ]
正規表現に疎い俺に>>173はどういう正規表現を書いているのか教えて欲しい。



270 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:49:32 ]
そこらじゅうに未定義・未規定・処理系依存が
ぽっかり口をあけているC言語のどの辺がガチガチ?

271 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 14:23:15 ]
コーディング規約でガチガチにするって意味だよ

272 名前:263 mailto:sage [2007/03/18(日) 18:26:20 ]
そんな連関、聞いたこと無いけどな。

273 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 19:16:41 ]
>>263
かっこが自由に無制限に入れ子に出来るパターンは
正規表現じゃ理論上無理らしいよ

274 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 20:28:25 ]
正規文法と文脈自由文法でぐぐってみ

275 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 20:33:57 ]
正規文法は a is b のルール.
線形構造しか表現できない.
A→B→C
A is B.
B is C.

文脈自由文法は a is b and c のルール.
木構造を表現できる.
A┬B
 └C┬D
    └E
A is B and C.
C is D and E.

そういうこっちゃ.

276 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 21:01:57 ]
だかPerlとかの変態拡張性器表現ならきっと・・・

277 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 21:11:13 ]
Perlのは正規表現の中でPerlのコードを評価できたりするからある意味万能

278 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:02:33 ]
つまりゲストのお客さんが自由に参加すると収拾がつかなくなるので、
レギュラーのメンツだけでやってくれ、というわけですね。

279 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 05:52:30 ]
結構前の話題だが

俺は例えば if なら
if(式) 文;
文が一行で、かつこの行が長くならない場合だけ { } を使わずに書くかなぁ。
if(式)
  文;
と書くぐらいならブレースを使ってる。



280 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 07:18:05 ]
条件文がすげー長かったら?
やっぱ1行でもブロックにする?

281 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 07:27:01 ]
条件式を関数なりマクロなりに分けて良い感じの名前を付ければおけ。
そういう時ローカル関数使える言語だといいんだけどな。

282 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 08:29:05 ]
ローカル関数は欲しいねえ・・

283 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 08:35:21 ]
C++;なら関数内で定義したクラス/構造体のメソッドで代用出来るけどな

284 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 08:44:43 ]
無理やりそんなことしても読みにくくなるだけだろ。
読みやすくすることが目的なのに。

285 名前:279 mailto:sage [2007/03/19(月) 20:21:25 ]
>280
うん。条件が長い時もブレースにする。
もしくは条件式の閉じ括弧を実行文の行に持ってくる。
これなら俺は間違えない。集団ならやらんけど。

if(
  条件式
) 実行文;

BASICで育ったんで一行IF/ブロックIFが基本、
長い時はブロック化するかこうしてたからなー。
IF 〜 _
THEN 実行文

286 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 13:47:00 ]
自分所のコーディングルールは、

if (式) 文1つ ;

if (式) {
複数の文
}

のいずれか片方のみ可。


287 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:34:40 ]
ルール作るなら、常にブロック使えやコラにした方が良くね?

288 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:35:55 ]
ガチガチだと読みにくくなるよ・・・

289 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:49:39 ]
if (式)
{
 ・・・
}

これに統一すると美しい



290 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 14:58:54 ]
主観

291 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 06:53:45 ]
>>289
自分には美しく見えない。

変数のスコープのために、
{
何か
{
何か
}
何か
}
という書き方をする場合があるので、
if (式)
{
何か
}
という書き方を許してしまうと、{ が現われたとき、
if (式)


{
何か
}
という可能性を考えて、前方向をチェックしなくてはならない。
if (式) {
何か
}
というように同じ行に書くように強制すれば、見てすぐにわかる。
if (式) と { が生き別れになってしまうこともない。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<67KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef