探検
コーディングスタイルにこだわるスレ
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2007/10/28(日) 15:59:01 コーディングスタイルについて熱く語れ
306デフォルトの名無しさん
2009/09/25(金) 10:21:31 >>305
&& や || のショートカットと関数の副作用の関係
f0() || f1() || …
f0 が成立すると f1 以降が評価されないってのを知らないやつがいるそうだ
なので、こう書かなきゃいけない。とてもうざい。
v0 = f0(); v1 = f1(); …
if (v0 || v1 || …)
&& や || のショートカットと関数の副作用の関係
f0() || f1() || …
f0 が成立すると f1 以降が評価されないってのを知らないやつがいるそうだ
なので、こう書かなきゃいけない。とてもうざい。
v0 = f0(); v1 = f1(); …
if (v0 || v1 || …)
307デフォルトの名無しさん
2009/09/25(金) 10:25:40 >>306
それ、 (s && strlen(s) > MIN) とかいう時はどうすればいいの?
それ、 (s && strlen(s) > MIN) とかいう時はどうすればいいの?
308デフォルトの名無しさん
2009/09/25(金) 10:59:33 int len = -1;
if (!s) {
len = strlen(s);
if (MIN < len) {
...
}
}
if (!s) {
len = strlen(s);
if (MIN < len) {
...
}
}
309デフォルトの名無しさん
2009/09/25(金) 11:00:20 !sじゃなくてsなw 素で間違えた。
310デフォルトの名無しさん
2009/09/25(金) 11:26:08 そんなルールおとなしく守ってるプログラマなんてほんとにいるの?
何なの?ばかなの?しぬの?
何なの?ばかなの?しぬの?
311デフォルトの名無しさん
2009/09/25(金) 12:08:10312デフォルトの名無しさん
2009/09/25(金) 12:10:14 その監査部隊を短絡評価の講習要員にすればいいのに。
313デフォルトの名無しさん
2009/09/26(土) 21:43:06 308の書き方だと、正しく読めない/書けない奴が居るから仕方が無い。
一方、漏れらに308の書き方を強制しても、せいぜい能率が落ちるだけ。
実戦の世界じゃ、手駒の性能を上げるよりは数を増やす方が効果的だしな。
平均能力UPの為に手駒を減らすより、平均能力を下げてでも手駒を増やそうってのは
冷徹ではあるが正しい方策。
一方、漏れらに308の書き方を強制しても、せいぜい能率が落ちるだけ。
実戦の世界じゃ、手駒の性能を上げるよりは数を増やす方が効果的だしな。
平均能力UPの為に手駒を減らすより、平均能力を下げてでも手駒を増やそうってのは
冷徹ではあるが正しい方策。
314デフォルトの名無しさん
2009/09/26(土) 23:32:37 へぼいコーディングルールの話になると、その理論がよくでてくるけど、実際はコーディングルールを
決めてるやつがヘボいだけだろうな。ほとんどの場合。
それに「ヘボいヤツを使うためにヘボいコーディングルールが有効」理論が、本当に正しいかすごい疑問だし。
決めてるやつがヘボいだけだろうな。ほとんどの場合。
それに「ヘボいヤツを使うためにヘボいコーディングルールが有効」理論が、本当に正しいかすごい疑問だし。
315デフォルトの名無しさん
2009/09/26(土) 23:42:03 まぁ俺の持論とは真逆だな
ウンココーダの頭数揃えても、精鋭一人にも劣る
ウンココーダの頭数揃えても、精鋭一人にも劣る
316デフォルトの名無しさん
2009/09/27(日) 09:34:49 > 実戦の世界じゃ、手駒の性能を上げるよりは数を増やす方が効果的だしな。
> 平均能力UPの為に手駒を減らすより、平均能力を下げてでも手駒を増やそうってのは
> 冷徹ではあるが正しい方策。
「人月の神話」に燦然と挑戦しているな。
まぁそのような開発分野もあるんだろう。多分。
> 平均能力UPの為に手駒を減らすより、平均能力を下げてでも手駒を増やそうってのは
> 冷徹ではあるが正しい方策。
「人月の神話」に燦然と挑戦しているな。
まぁそのような開発分野もあるんだろう。多分。
317デフォルトの名無しさん
2009/09/28(月) 09:09:58 「ヘボいヤツを使うためにヘボいコーディングルールが有効」理論は確かに疑問だが、
十分な精鋭を確保できるプロジェクトなんてほとんど無いんだから、大量のヘボが存在
するのは前提だと思う。
加えて上司も無能だと、そのヘボが逐次投入されてチームは恐竜に、プロジェクトは
タールの沼に。
十分な精鋭を確保できるプロジェクトなんてほとんど無いんだから、大量のヘボが存在
するのは前提だと思う。
加えて上司も無能だと、そのヘボが逐次投入されてチームは恐竜に、プロジェクトは
タールの沼に。
318デフォルトの名無しさん
2009/09/29(火) 21:53:42 >316
そうでもないと思うが。
1つのプロジェクトに投入する人員については、「人月の神話」の理論で良いけど、
複数のプロジェクトに人員を配置する場合は、>313の理論の方が適している。
308みないなルールは大規模なプロジェクトほど多く、小規模なプロジェクトほど比較的フリーだろ?
(逆な例もある事は承知している)
そうでもないと思うが。
1つのプロジェクトに投入する人員については、「人月の神話」の理論で良いけど、
複数のプロジェクトに人員を配置する場合は、>313の理論の方が適している。
308みないなルールは大規模なプロジェクトほど多く、小規模なプロジェクトほど比較的フリーだろ?
(逆な例もある事は承知している)
319デフォルトの名無しさん
2009/09/29(火) 21:57:10 短絡評価が分からないだけならまだしも、「教えても理解できない」という人員なんか
さすがに切り捨てても困らないと思うけどな
さすがに切り捨てても困らないと思うけどな
320デフォルトの名無しさん
2009/09/29(火) 22:31:14 簡単なコードを量産するような人海戦術プロジェクトでも、上位の2,3割だけ使って、
のこりはじゃまにならないように遊ばせておいても、あんがい生産性あがるんじゃないかって気もする。
のこりはじゃまにならないように遊ばせておいても、あんがい生産性あがるんじゃないかって気もする。
321デフォルトの名無しさん
2009/09/29(火) 23:13:59322デフォルトの名無しさん
2009/09/30(水) 00:10:59 どうでもいいけどstrlen()が返すのはintじゃなくてsize_tだよ
323デフォルトの名無しさん
2009/10/01(木) 20:40:57 ストレンツォ容赦せん!
324デフォルトの名無しさん
2009/10/11(日) 14:52:50 >>318
つまり、たとえば優秀なプログラマなら3ヶ月で終わる仕事を一年かけて
(原則同じくらいの人数で)やるけど、
同時に抱えられるプロジェクト数を増やして会社としてのスケールメリットを得るって話?
要するに節約できるのは総務だの人事だのの管理コストの話であって
プロジェクトそのものの効率は上がってないと思うが…
つまり、たとえば優秀なプログラマなら3ヶ月で終わる仕事を一年かけて
(原則同じくらいの人数で)やるけど、
同時に抱えられるプロジェクト数を増やして会社としてのスケールメリットを得るって話?
要するに節約できるのは総務だの人事だのの管理コストの話であって
プロジェクトそのものの効率は上がってないと思うが…
325デフォルトの名無しさん
2009/10/12(月) 02:57:19 >324
プロジェクトの効率は上がらなくても、利益は上げられる罠。
場合にもよるが。
下手すりゃ投入人員と期間を増やせばその分儲かる。
糞ルールがまかり通ってる現場って、大体は上がこんな思想で動いてる希ガス。
プロジェクトの効率は上がらなくても、利益は上げられる罠。
場合にもよるが。
下手すりゃ投入人員と期間を増やせばその分儲かる。
糞ルールがまかり通ってる現場って、大体は上がこんな思想で動いてる希ガス。
326デフォルトの名無しさん
2009/10/12(月) 03:57:31 まぁ、その思想を最高だと思って布教しようとしたりしなきゃどうでもいいけどな
327デフォルトの名無しさん
2009/10/17(土) 11:55:45 javaで
public void XXX() throws YYY, ZZZ {
}
のthrows以下が長くなると80桁超えますけど見やすい折り返し方ないですか?
eclipseのデフォルトで整形すると
public void XXX() throws YYY,
ZZZ {
}
とやってくれましたけど見づらいな。
public void XXX() throws YYY, ZZZ {
}
のthrows以下が長くなると80桁超えますけど見やすい折り返し方ないですか?
eclipseのデフォルトで整形すると
public void XXX() throws YYY,
ZZZ {
}
とやってくれましたけど見づらいな。
328デフォルトの名無しさん
2009/10/17(土) 12:44:58329デフォルトの名無しさん
2009/10/18(日) 21:42:59330デフォルトの名無しさん
2009/10/20(火) 11:51:05331デフォルトの名無しさん
2009/10/20(火) 12:09:53 C++ 使っててカンマとか演算子の「前」で折り返して、演算子の類が行頭にくるように
してたんだけど、 Python 使い出したらそうもいかなくなって、今は微妙な気持ちです。
してたんだけど、 Python 使い出したらそうもいかなくなって、今は微妙な気持ちです。
332デフォルトの名無しさん
2009/10/20(火) 12:20:08333デフォルトの名無しさん
2009/10/20(火) 13:57:32 >>331
( ・∀・)人(・∀・ )ナカーマ
.append(foo)
.append(bar)
.toString();
+ fooooooooooooooooooooooo
- (baaaaaaaaaar % baaaaaaaaz);
= {
11111111111
, 2222222222
, 3333333333
}
if (
(cooooooooooooooond)
|| (baaaaaaaar && bazzzzzzzz)
)
文末を見るより、文頭を見るほうが目の動きが少ない。
( ・∀・)人(・∀・ )ナカーマ
.append(foo)
.append(bar)
.toString();
+ fooooooooooooooooooooooo
- (baaaaaaaaaar % baaaaaaaaz);
= {
11111111111
, 2222222222
, 3333333333
}
if (
(cooooooooooooooond)
|| (baaaaaaaar && bazzzzzzzz)
)
文末を見るより、文頭を見るほうが目の動きが少ない。
334デフォルトの名無しさん
2009/10/20(火) 14:05:42 . を先頭にもってくるのは許せるが、 , を先頭にもってくるのが許せないのはなぜだろう。
335デフォルトの名無しさん
2009/10/24(土) 22:25:29 if 〜 else if 〜 else の各節にコメントをつけたいとき、俺はこのように書いているんです。
// こういう場合はこう
if (...)
{
}
// こういう場合はこう
else
{
}
ところが、節を分断するのはよくないと言う人がいるんですね。それはそれで一理あります。
その人はこう書いている。
if (...) // こういう場合はこう
{
}
else // こういう場合はこう
{
}
このやり方だと、条件式が長くなったり複数行にわたると、ちっと面倒なことになる。
みなさん、if文のコメントはどのように書いていますか?
// こういう場合はこう
if (...)
{
}
// こういう場合はこう
else
{
}
ところが、節を分断するのはよくないと言う人がいるんですね。それはそれで一理あります。
その人はこう書いている。
if (...) // こういう場合はこう
{
}
else // こういう場合はこう
{
}
このやり方だと、条件式が長くなったり複数行にわたると、ちっと面倒なことになる。
みなさん、if文のコメントはどのように書いていますか?
336デフォルトの名無しさん
2009/10/24(土) 22:35:25 >>335
if にコメント付いてれば else へのコメントは冗長だろ?考えるだけ無駄。
if にコメント付いてれば else へのコメントは冗長だろ?考えるだけ無駄。
337デフォルトの名無しさん
2009/10/24(土) 23:21:52 冗長なんて言ったらコメントなんて書けなくなる。
それに複数のelse ifがある場合はコメントがあった方がいい。
それに複数のelse ifがある場合はコメントがあった方がいい。
338デフォルトの名無しさん
2009/10/25(日) 00:16:58339デフォルトの名無しさん
2009/10/25(日) 01:41:21 // コメント
if(...) {
}
else {
// コメント
}
if(...) {
}
else {
// コメント
}
340デフォルトの名無しさん
2009/10/25(日) 02:39:09 >>339
俺もそれだ。
俺もそれだ。
341デフォルトの名無しさん
2009/10/25(日) 02:43:33 俺はこうだわ。space efficiant!!
if(...) { // コメント
foo();
} else if(...) { // コメント
bar();
} else {
foobar();
}
if(...) { // コメント
foo();
} else if(...) { // コメント
bar();
} else {
foobar();
}
342デフォルトの名無しさん
2009/10/25(日) 07:39:57 漏れは内容に応じて使い分けた方が良いと思うけど。
// 分岐全体について。
if( ... ){ // 式について。
// ブロック内の処理&実行条件の概要
}
else {
// ブロック内の処理&実行条件の概要
}
(例)
// 〜と〜を切り分ける
if( … // 〜をチェック
&& … ) { // 〜をチェック
// 〜の場合、〜する
}
else {
// 〜の場合、〜する
}
// 分岐全体について。
if( ... ){ // 式について。
// ブロック内の処理&実行条件の概要
}
else {
// ブロック内の処理&実行条件の概要
}
(例)
// 〜と〜を切り分ける
if( … // 〜をチェック
&& … ) { // 〜をチェック
// 〜の場合、〜する
}
else {
// 〜の場合、〜する
}
343デフォルトの名無しさん
2009/10/25(日) 14:06:52 こうしてる
if(...) {
// ...なら〜
} else {
// 〜(条件についての記述は無し)
}
if(...) {
// ...なら〜
} else {
// 〜(条件についての記述は無し)
}
344デフォルトの名無しさん
2009/11/22(日) 14:45:58 お前ら、そんな面倒なコメントつけるくらいなら
is_こういう場合() っていう関数作ってif に入れとけよ。
どうしてもコメント書きたかったら
is_こういう場合() のところに書けばすっきりしていいだろ。
is_こういう場合() っていう関数作ってif に入れとけよ。
どうしてもコメント書きたかったら
is_こういう場合() のところに書けばすっきりしていいだろ。
345デフォルトの名無しさん
2009/11/23(月) 06:06:37 >344
それだと is〜() が何をチェックしてるのか知りたくなったら、一々中身を見なきゃ分からないし、
is〜() の条件を変えたくなったら、使ってる場所を全部チェックした上で変更するか、
「使われない関数」が生じるのを覚悟で別な関数を追加しなきゃならん。
(まぁ静的リンクのみなら、コンパイルすれば何処で使ってるかは分かるけど)
is〜()の名称自体は「何を」チェックするかに留めて、「何故」チェックするかとか
条件式全体が何を意味するかとかは、コメントに書く方がよっぽど面倒が無い。
それだと is〜() が何をチェックしてるのか知りたくなったら、一々中身を見なきゃ分からないし、
is〜() の条件を変えたくなったら、使ってる場所を全部チェックした上で変更するか、
「使われない関数」が生じるのを覚悟で別な関数を追加しなきゃならん。
(まぁ静的リンクのみなら、コンパイルすれば何処で使ってるかは分かるけど)
is〜()の名称自体は「何を」チェックするかに留めて、「何故」チェックするかとか
条件式全体が何を意味するかとかは、コメントに書く方がよっぽど面倒が無い。
346デフォルトの名無しさん
2009/11/23(月) 10:58:02 >>345
> それだと is〜() が何をチェックしてるのか知りたくなったら、一々中身を見なきゃ分からないし、
ちゃんと名前付けて、関数宣言部分にコメント書けば、そんなことにはならないよ。
中身見るのはバグを疑うときぐらい。
> is〜()の名称自体は「何を」チェックするかに留めて、「何故」チェックするかとか
> 条件式全体が何を意味するかとかは、コメントに書く方がよっぽど面倒が無い。
コメントに書いて良いのは「何故」だけだな。
> それだと is〜() が何をチェックしてるのか知りたくなったら、一々中身を見なきゃ分からないし、
ちゃんと名前付けて、関数宣言部分にコメント書けば、そんなことにはならないよ。
中身見るのはバグを疑うときぐらい。
> is〜()の名称自体は「何を」チェックするかに留めて、「何故」チェックするかとか
> 条件式全体が何を意味するかとかは、コメントに書く方がよっぽど面倒が無い。
コメントに書いて良いのは「何故」だけだな。
347デフォルトの名無しさん
2009/11/23(月) 11:01:17 仕方なくわかりづらいコード書くときしか関数の中にコメントは書かないな
外側に書いたドキュメントだけでいい
外側に書いたドキュメントだけでいい
348デフォルトの名無しさん
2009/11/23(月) 11:01:32 >>345の思考様式だと関数を細かく分けることは悪になりそうだなw
適切な名前の関数を作ってどんどん分けるのは常識レベルだと思ってたが
適切な名前の関数を作ってどんどん分けるのは常識レベルだと思ってたが
349345
2009/11/23(月) 18:28:36 漏れは>344の言葉をそのまま鵜呑みにすると
// Hogeの場合
if ( isFoo() && isBar() )
のようなコードも、コメント付けるより
if( isHoge() )
とした方が良いって事になるのを否定しただけです。
ちょっと言葉足らずで意図不明瞭だったのは申し訳ない。
↓以外は>346-348全てに同意。
>346
>コメントに書いて良いのは「何故」だけだな。
この言葉を鵜呑みにすると、「何時呼び出す」とか書けない。
これは「5W1Hが単純に読み取れない場合だけ」のがより適切だと思う。
>348
>適切な名前の関数を作ってどんどん分けるのは常識レベルだと思ってたが
これは「どんどん」「分ける」の間に「適切な粒度になるよう」が抜けてる。
// Hogeの場合
if ( isFoo() && isBar() )
のようなコードも、コメント付けるより
if( isHoge() )
とした方が良いって事になるのを否定しただけです。
ちょっと言葉足らずで意図不明瞭だったのは申し訳ない。
↓以外は>346-348全てに同意。
>346
>コメントに書いて良いのは「何故」だけだな。
この言葉を鵜呑みにすると、「何時呼び出す」とか書けない。
これは「5W1Hが単純に読み取れない場合だけ」のがより適切だと思う。
>348
>適切な名前の関数を作ってどんどん分けるのは常識レベルだと思ってたが
これは「どんどん」「分ける」の間に「適切な粒度になるよう」が抜けてる。
350デフォルトの名無しさん
2009/11/23(月) 20:50:16 適切に分けてりゃ、関数名は「何を」チェックするかだけ示せば十分>>344のように
運用できるだろ
運用できるだろ
351デフォルトの名無しさん
2009/11/23(月) 23:17:29 >>349
>>コメントに書いて良いのは「何故」だけだな。
>
> この言葉を鵜呑みにすると、「何時呼び出す」とか書けない。
コードに呼び出しタイミングは書いてあるのに、なんでそんなことを
コメントに書きたいの?
それとも、関数を作った側がどんなときに呼び出すべきか想定してる
ってこと?
それなら関数の側にコメント書くから、やっぱり if にコメント書くことには
ならないよ。
>>コメントに書いて良いのは「何故」だけだな。
>
> この言葉を鵜呑みにすると、「何時呼び出す」とか書けない。
コードに呼び出しタイミングは書いてあるのに、なんでそんなことを
コメントに書きたいの?
それとも、関数を作った側がどんなときに呼び出すべきか想定してる
ってこと?
それなら関数の側にコメント書くから、やっぱり if にコメント書くことには
ならないよ。
352デフォルトの名無しさん
2009/11/23(月) 23:53:41 ってゆーか、さ、
if ((flag & F_OPT1) && (flag & F_ERROR_ABORT)) // デバッグが有効で abort する場合
{ ... }
else
{ ... }
みたいに謎の条件判断とコメント両方つけるぐらいなら
if (is_abort_on_debug(flag))
{ ... }
else
{ ... }
って書くだろ?
if ((flag & F_OPT1) && (flag & F_ERROR_ABORT)) // デバッグが有効で abort する場合
{ ... }
else
{ ... }
みたいに謎の条件判断とコメント両方つけるぐらいなら
if (is_abort_on_debug(flag))
{ ... }
else
{ ... }
って書くだろ?
353354
2009/11/24(火) 00:15:33 ついでに言っとくと、>>342 みたいに
細切れでコメントつけるのはあんまり好きじゃない。
if (is_debug() && // デバッグモードをチェック
is_error_abort() ) { // エラーで abortするかチェック
// デバッグ時エラーならアボートする
... // 必要な処理をする
} else {
// デバッグモードでないか、エラーでも abort しない場合
nr_error++; // エラーカウンタを更新
... // 必要な処理をする
}
みたいに、C言語の日本語直訳を書くだけになりやすい。
それなら
/*****************************
* この関数は○○の時は△△します。
* 詳細は http://<社内サイトの仕様書置き場>
* の □□ のフローを参照してください。
* データフォーマットは grep -r Hoge_data ./sub1/include で探してしてください。
*****************************/
とでも書いてあったほうがわかるよ。
細切れでコメントつけるのはあんまり好きじゃない。
if (is_debug() && // デバッグモードをチェック
is_error_abort() ) { // エラーで abortするかチェック
// デバッグ時エラーならアボートする
... // 必要な処理をする
} else {
// デバッグモードでないか、エラーでも abort しない場合
nr_error++; // エラーカウンタを更新
... // 必要な処理をする
}
みたいに、C言語の日本語直訳を書くだけになりやすい。
それなら
/*****************************
* この関数は○○の時は△△します。
* 詳細は http://<社内サイトの仕様書置き場>
* の □□ のフローを参照してください。
* データフォーマットは grep -r Hoge_data ./sub1/include で探してしてください。
*****************************/
とでも書いてあったほうがわかるよ。
354デフォルトの名無しさん
2009/11/24(火) 00:17:52 オレだよ、オレオレ
355354
2009/11/24(火) 02:45:53 >350
「AかつB ⇒ Cである」の「Cである」が、一言で言えるなら>344で十分だけど、
常にそうであるとは限らんでしょ。
「Aである」「Bである」とか、一言で言える「Cである」は
>344の方針で良いと思うけど。
>351
すまん、if文へのコメント限定ではなく、コメント全般で考えてた。
if文へのコメント限定だったら、「何時真になる」とか。
>352
その例、漏れなら下のいずれかにする。
1,2の場合はコメント無し。3は政治的理由等で1,2が採択できない場合の最後の手段。
(1) if ( (flag & F_OPT_DEBUG) && (flag & F_ERROR_ABORT) )
(2) if ( isDebug(flag) && isAbort(flag) )
(3) if ( (flag & F_OPT1) //デバッグON
&&(flag & F_ERROR_ABORT) )
>353
352も漏れだけど、そーいう実況的コメントを書けという意図ではない。
コメントを書くなら、対象が明示的になる位置に書くべきでないの?
という趣旨で書いてる。
「AかつB ⇒ Cである」の「Cである」が、一言で言えるなら>344で十分だけど、
常にそうであるとは限らんでしょ。
「Aである」「Bである」とか、一言で言える「Cである」は
>344の方針で良いと思うけど。
>351
すまん、if文へのコメント限定ではなく、コメント全般で考えてた。
if文へのコメント限定だったら、「何時真になる」とか。
>352
その例、漏れなら下のいずれかにする。
1,2の場合はコメント無し。3は政治的理由等で1,2が採択できない場合の最後の手段。
(1) if ( (flag & F_OPT_DEBUG) && (flag & F_ERROR_ABORT) )
(2) if ( isDebug(flag) && isAbort(flag) )
(3) if ( (flag & F_OPT1) //デバッグON
&&(flag & F_ERROR_ABORT) )
>353
352も漏れだけど、そーいう実況的コメントを書けという意図ではない。
コメントを書くなら、対象が明示的になる位置に書くべきでないの?
という趣旨で書いてる。
356デフォルトの名無しさん
2009/11/24(火) 02:47:03 >355=>345≠>354
orz
orz
357デフォルトの名無しさん
2009/11/24(火) 02:54:18358デフォルトの名無しさん
2009/11/27(金) 18:45:01 中身が1行のif文やfor文について
// 1
if (...)
...;
{}省略してバグ混入したら嫌。
// 2
if (...) { ...; }
デバッグの時にブレークポイントが置きにくい。1行が長くなりそうなのも×。
// 3
if (...)
{
...;
}
行数取りすぎて画面内に表示されるコードが減ってしまう。if (...) {にすれば1行減るけど普段使ってないから一貫して使いたくない。
// 4
if (...)
{ ...; }
インデントがないのが見にくそう。かと言って{がインデントされているのも気持ち悪い。
それぞれデメリットがあって悩ましいです。
皆さんはどう書いていますか?
// 1
if (...)
...;
{}省略してバグ混入したら嫌。
// 2
if (...) { ...; }
デバッグの時にブレークポイントが置きにくい。1行が長くなりそうなのも×。
// 3
if (...)
{
...;
}
行数取りすぎて画面内に表示されるコードが減ってしまう。if (...) {にすれば1行減るけど普段使ってないから一貫して使いたくない。
// 4
if (...)
{ ...; }
インデントがないのが見にくそう。かと言って{がインデントされているのも気持ち悪い。
それぞれデメリットがあって悩ましいです。
皆さんはどう書いていますか?
359デフォルトの名無しさん
2009/11/27(金) 19:00:25 「{}省略してバグ混入」とはちょくちょく聞く意見だが、
生まれてこの方十数万行書いてきたが、
一回もソレになったことがない。
中括弧書き忘れたからといってバグるやつも、
バグるから書いておけばいいと考えるやつも、
死んでしまえと思う。
その程度の注意力と読解力、記述力しかないのなら、
人間やめてしまえと思う。
生まれてこの方十数万行書いてきたが、
一回もソレになったことがない。
中括弧書き忘れたからといってバグるやつも、
バグるから書いておけばいいと考えるやつも、
死んでしまえと思う。
その程度の注意力と読解力、記述力しかないのなら、
人間やめてしまえと思う。
360デフォルトの名無しさん
2009/11/27(金) 19:25:27 >359
確かに中括弧省略によるバグ混入のリスクがどの程度あるのか疑問ですね。
しかし、その反論も中括弧を省略するメリットがなければ意味がなくないですか?
中括弧を書く僅かな手間で、少しでも注意力のいらないコードが書けるのなら理にかなっていると思いますが。
確かに中括弧省略によるバグ混入のリスクがどの程度あるのか疑問ですね。
しかし、その反論も中括弧を省略するメリットがなければ意味がなくないですか?
中括弧を書く僅かな手間で、少しでも注意力のいらないコードが書けるのなら理にかなっていると思いますが。
361デフォルトの名無しさん
2009/11/27(金) 19:56:23 >>360
ifに一行くっついてて、それにもう一行加えるんだろ? すぐ下とかに。
それを書くときに中括弧が必要か否かに注意を払えないやつ、
書き忘れ、などと捕らえてしまうやつは死んだほうがいい。
変更を加えるとき、いつだってその挿入行の前後への注意は必要だ。
その注意力すら欠いておいてプログラミングをしようとするのは怖い。
> 中括弧を書く僅かな手間で、少しでも注意力のいらないコードが書けるのなら理にかなっていると思いますが。
それは否定していない。ただ、効果は有るが、全体にとって微少だと思ってる。
ただ、そんなヤワなサポートに頼ってしまう時点で、既に色々ダメだ。
個人的にはこうしてる。
if (cond) return; // continue, breakなども
if (cond) {
abababa;
} else {
abababa;
}
これは、注意力軽減への配慮でもなんでもなく、
見た目を統一したいがためにそうしてる。
ネストを避けるための式は右側に書いちゃう。
それ以外で中括弧はいつもつける。elseがなくてもつける。
> 中括弧を省略するメリット
メリットなんざ特に思いつかない。あえて言うなら見た目。
ifに一行くっついてて、それにもう一行加えるんだろ? すぐ下とかに。
それを書くときに中括弧が必要か否かに注意を払えないやつ、
書き忘れ、などと捕らえてしまうやつは死んだほうがいい。
変更を加えるとき、いつだってその挿入行の前後への注意は必要だ。
その注意力すら欠いておいてプログラミングをしようとするのは怖い。
> 中括弧を書く僅かな手間で、少しでも注意力のいらないコードが書けるのなら理にかなっていると思いますが。
それは否定していない。ただ、効果は有るが、全体にとって微少だと思ってる。
ただ、そんなヤワなサポートに頼ってしまう時点で、既に色々ダメだ。
個人的にはこうしてる。
if (cond) return; // continue, breakなども
if (cond) {
abababa;
} else {
abababa;
}
これは、注意力軽減への配慮でもなんでもなく、
見た目を統一したいがためにそうしてる。
ネストを避けるための式は右側に書いちゃう。
それ以外で中括弧はいつもつける。elseがなくてもつける。
> 中括弧を省略するメリット
メリットなんざ特に思いつかない。あえて言うなら見た目。
362デフォルトの名無しさん
2009/11/27(金) 19:57:15 中括弧省略によるバグは実際会社で2例ほど見た
自分だけがいじるコードならいいだろうけど
後々他の馬の骨がいじる可能性も考えると
{ } 省略はやめた方がいい
ちなみに、俺は開始 { は if と同じ行に書く派
そして { } 内が短くても { の次は改行を入れ、} は単独行にする
昔は { を if の次の行に書いてたけど間延びするのでやめた
でも、行が長いと間が詰まりすぎると感じる事もあるので微妙な所
自分だけがいじるコードならいいだろうけど
後々他の馬の骨がいじる可能性も考えると
{ } 省略はやめた方がいい
ちなみに、俺は開始 { は if と同じ行に書く派
そして { } 内が短くても { の次は改行を入れ、} は単独行にする
昔は { を if の次の行に書いてたけど間延びするのでやめた
でも、行が長いと間が詰まりすぎると感じる事もあるので微妙な所
363デフォルトの名無しさん
2009/11/27(金) 20:01:17 最初は一行でも後で書き足すことも多いので大抵は常に括弧付ける。
括弧あった方が見やすいし。
括弧あった方が見やすいし。
364デフォルトの名無しさん
2009/11/27(金) 20:46:51365デフォルトの名無しさん
2009/11/27(金) 22:05:58 お前らLinux KernelとGNUのコーディング規約調べてみw
366デフォルトの名無しさん
2009/11/27(金) 22:11:31 Linuxカーネルは、単文を中括弧で囲むのを基本的に禁止してるね。
if文の分岐の片方が単文な時だけ、特例として中括弧で囲うルールだったはず。
if文の分岐の片方が単文な時だけ、特例として中括弧で囲うルールだったはず。
367デフォルトの名無しさん
2009/11/27(金) 22:54:07 後から追加して複文になったときの問題だけじゃなくて、
if-else のネストで意図したものと異なる方に
else がくっつくことがあるって問題もあるんだぜ
if-else のネストで意図したものと異なる方に
else がくっつくことがあるって問題もあるんだぜ
368デフォルトの名無しさん
2009/11/28(土) 03:28:03 それでもLinuxは無駄な中括弧を排除してるし、それであの巨大プロジェクトが一応は
問題なくやれてる訳だよな
ぶっちゃけ、こだわるほどのことではないんだろ
問題なくやれてる訳だよな
ぶっちゃけ、こだわるほどのことではないんだろ
369デフォルトの名無しさん
2009/11/28(土) 13:16:28 Linuxいじるような人は概ねレベルが高いだろうから問題ないんだろうな
というイメージだが、実際の所どうなんだろう
というイメージだが、実際の所どうなんだろう
370デフォルトの名無しさん
2009/11/28(土) 13:29:00 しっかり統一できてればいいんじゃね
371デフォルトの名無しさん
2009/11/28(土) 13:49:06 VC使っててもミスる人いるのに
vimやemacsで大丈夫なの?
vimやemacsで大丈夫なの?
372デフォルトの名無しさん
2009/11/28(土) 21:56:34 ミスとか以前に、他の複数行のif文と見た感じが統一されなくて気持ち悪いのは俺だけ?
373デフォルトの名無しさん
2009/11/28(土) 22:21:16 統一性は別に気にならないな
単一文 if は単一文 if で統一されていれば
単一文 if は単一文 if で統一されていれば
374デフォルトの名無しさん
2009/11/29(日) 02:03:11 ぶっちゃけ、if-breakやif-returnまで中括弧入れてると冗長感はかなりあったから、
俺はLinux方式の方が好みかな
Perlなんかは逆に中括弧の強制が言語的に決まってたりするし、それはそれでいい
と思うけど(つーかPerlはreturn ifとかand returnとか好き放題に書けるしな)
俺はLinux方式の方が好みかな
Perlなんかは逆に中括弧の強制が言語的に決まってたりするし、それはそれでいい
と思うけど(つーかPerlはreturn ifとかand returnとか好き放題に書けるしな)
375デフォルトの名無しさん
2009/11/29(日) 09:11:32 rubyみたいなif修飾子があれば最高なんだよな。
next if condとかってスカッとする。
next if condとかってスカッとする。
376デフォルトの名無しさん
2009/11/29(日) 18:16:18 Perlのstatement modifierをそのままパクった奴だな
さらにそのパクリ元はBASIC/PLUSらしいが、どういう言語かシラネ
さらにそのパクリ元はBASIC/PLUSらしいが、どういう言語かシラネ
377デフォルトの名無しさん
2009/11/29(日) 21:10:43 else if () は中括弧なしの単文だよな。
>>368
Linux はコードのチェックインの前に基本的に
Kernel ML へのパッチ提出でレビューを経るから
抜けはそこで指摘できる。
一人でコーディングするなら後任のことも
考えて {} つけといたほうがいい。
>>368
Linux はコードのチェックインの前に基本的に
Kernel ML へのパッチ提出でレビューを経るから
抜けはそこで指摘できる。
一人でコーディングするなら後任のことも
考えて {} つけといたほうがいい。
378デフォルトの名無しさん
2009/11/30(月) 02:01:45 そんなのミスる奴は、悪いけど擁護しきれないレベルだと思うんだが
まともかつ慣れた奴でそんなミスをやる奴っているの?
まともかつ慣れた奴でそんなミスをやる奴っているの?
379デフォルトの名無しさん
2009/11/30(月) 16:36:53 都市伝説だと思うよw
380デフォルトの名無しさん
2009/12/02(水) 01:12:47 >>378
新人をいきなり投入ってあるよ。
ま、一人に投げっぱなしじゃないけど、
char *foo(void)
{
char buff[128];
。。。
return buff;
}
みたいなコード書くヤツでも平気で
投入されてくるから要注意だw
そういえば、
for (...);
{
/* 何かの処理 */
}
で、ループの中が一度しか実行されない病
にはまった事はあるw
新人をいきなり投入ってあるよ。
ま、一人に投げっぱなしじゃないけど、
char *foo(void)
{
char buff[128];
。。。
return buff;
}
みたいなコード書くヤツでも平気で
投入されてくるから要注意だw
そういえば、
for (...);
{
/* 何かの処理 */
}
で、ループの中が一度しか実行されない病
にはまった事はあるw
381デフォルトの名無しさん
2009/12/05(土) 00:53:50 人いないのかよ。
ぬるぽ!
ぬるぽ!
382デフォルトの名無しさん
2009/12/05(土) 02:18:36 >>381 ガッ
383デフォルトの名無しさん
2009/12/05(土) 09:47:04 対応する中括弧のインデントの階層を同じにしろといつも思ってる
なんでみんな階層変えて書くの?死ぬの?
なんでみんな階層変えて書くの?死ぬの?
384デフォルトの名無しさん
2009/12/05(土) 11:38:34385デフォルトの名無しさん
2009/12/05(土) 18:53:46 一つのクラス内やファイル内に記述する関数やメソッドの順番ってどうしてる?
たとえばCで f1()からf2()とf3()が呼ばれて、f3()からf4()が呼ばれる場合、自分は
void f2() { ... }
void f4() { ... }
void f3() { f4(); ... }
void f1() { f2(); ... f3(); ... }
のように、呼び出される関数を上の方に書いてるんだけど、
呼び出される関数を下の方に書くスタイルもあるよね。
こういう理由でこういうスタイルにしているというのがあれば教えて。
たとえばCで f1()からf2()とf3()が呼ばれて、f3()からf4()が呼ばれる場合、自分は
void f2() { ... }
void f4() { ... }
void f3() { f4(); ... }
void f1() { f2(); ... f3(); ... }
のように、呼び出される関数を上の方に書いてるんだけど、
呼び出される関数を下の方に書くスタイルもあるよね。
こういう理由でこういうスタイルにしているというのがあれば教えて。
386デフォルトの名無しさん
2009/12/05(土) 19:12:42 トップダウンで実装してる時はトップダウンで。
ボトムアップで実装してる時はボトムアップで。
# コーディング規則があるときや、既存のプロジェクトでは他に合わせて。
ボトムアップで実装してる時はボトムアップで。
# コーディング規則があるときや、既存のプロジェクトでは他に合わせて。
387デフォルトの名無しさん
2009/12/05(土) 20:35:30388デフォルトの名無しさん
2009/12/06(日) 00:23:38 >>385
プロトタイプ宣言はつけてるのでどんな順番でもいいのだが、
追加・変更した関数を上に持ってくる。 だいたい
いじる関数は決まってるからな。
自然と、下に行くほど枯れた関数ということになる。
機能単位でまとめられるようであれば別ファイルに
くくり出すときに雑魚は下の方でソートしてる。
起動時間などの最適化をかけるために順序を
変えることもある。 起動時に使うものをなるべく
一箇所に集めて上に持ってくるとか。
プロトタイプ宣言はつけてるのでどんな順番でもいいのだが、
追加・変更した関数を上に持ってくる。 だいたい
いじる関数は決まってるからな。
自然と、下に行くほど枯れた関数ということになる。
機能単位でまとめられるようであれば別ファイルに
くくり出すときに雑魚は下の方でソートしてる。
起動時間などの最適化をかけるために順序を
変えることもある。 起動時に使うものをなるべく
一箇所に集めて上に持ってくるとか。
389デフォルトの名無しさん
2009/12/06(日) 00:49:16 宣言を繰り返すのが面倒だから、呼ばれる側が上。
自然とファイルローカルな関数が上に来て、外部関数は下に来る。
ヘッダで宣言してる外部関数は、ヘッダでの宣言順にあわせる。
自然とファイルローカルな関数が上に来て、外部関数は下に来る。
ヘッダで宣言してる外部関数は、ヘッダでの宣言順にあわせる。
390デフォルトの名無しさん
2009/12/06(日) 11:46:02 他人のソースをいくつか読んでみて、
見やすいのと見難いので比較してみれば?
わしは前フリ長いの嫌いなんで、上位の関数を
上に書いて欲しい。 わからないところだけ下を見る。
つか、クラスで最初に private もって来る奴とかいないだろ?
それと同じことじゃね?
見やすいのと見難いので比較してみれば?
わしは前フリ長いの嫌いなんで、上位の関数を
上に書いて欲しい。 わからないところだけ下を見る。
つか、クラスで最初に private もって来る奴とかいないだろ?
それと同じことじゃね?
391デフォルトの名無しさん
2009/12/06(日) 12:08:47 >>390
ふつーにいるだろ? privateを最初に書くの。
ふつーにいるだろ? privateを最初に書くの。
392デフォルトの名無しさん
2009/12/06(日) 12:09:15 if(hoge)
if (hoge)
if( hoge )
どう書く?
カッコが入れ子になった場合に一番見やすいのは最後だと思うが野暮ったい
if (hoge)
if( hoge )
どう書く?
カッコが入れ子になった場合に一番見やすいのは最後だと思うが野暮ったい
393デフォルトの名無しさん
2009/12/06(日) 12:13:30 if (hoge)
関数やマクロの場合は hoge(...) と、カッコの前を空けない。
if (...), for (...), while (...) などは空ける。
関数やマクロの場合は hoge(...) と、カッコの前を空けない。
if (...), for (...), while (...) などは空ける。
394デフォルトの名無しさん
2009/12/06(日) 12:29:09 >>392
2番目がふつー。
2番目がふつー。
395デフォルトの名無しさん
2009/12/06(日) 13:13:26 if ( hoge )
だな。
for, while も同様。
だな。
for, while も同様。
396デフォルトの名無しさん
2009/12/06(日) 13:17:05 カッコの内側に空白を入れるのは、マイクロソフトのサンプルとかが
そのスタイルだよね。
そのスタイルだよね。
397デフォルトの名無しさん
2009/12/06(日) 13:20:39 MSはC++では1番目,C#は2番目
398デフォルトの名無しさん
2009/12/06(日) 13:21:20訂正C++は3番目
399デフォルトの名無しさん
2009/12/06(日) 13:24:19 今MSDNのサンプルで確認したら統一されてないな。
あったりなかったり。
カッコの内側のスペース。
あったりなかったり。
カッコの内側のスペース。
400デフォルトの名無しさん
2009/12/06(日) 13:28:46 VS2008のオートフォーマットは、デフォルトでは、C#はカッコの
内側にスペース入れない設定。
C++は、設定項目がなかった。
内側にスペース入れない設定。
C++は、設定項目がなかった。
401デフォルトの名無しさん
2009/12/07(月) 17:33:08 一番大切な事は、それを書いて自分が何を感じるかだ
402デフォルトの名無しさん
2009/12/07(月) 19:33:21 >>401
もちろんコスモを感じる
もちろんコスモを感じる
403デフォルトの名無しさん
2009/12/08(火) 00:30:35 ブランクを感じる。
ごめん、書いてみたかっただけw
ごめん、書いてみたかっただけw
404385
2009/12/08(火) 12:23:16 なるほど、色々参考になった。
自分の場合、ソースの流れを追うときに、呼び出される関数が上にあるか下にあるかが
あらかじめ分かってた方がスムーズに追えるかなと思うんだが、順番を気にしない人が
けっこう多いんだね。
自分の場合、ソースの流れを追うときに、呼び出される関数が上にあるか下にあるかが
あらかじめ分かってた方がスムーズに追えるかなと思うんだが、順番を気にしない人が
けっこう多いんだね。
405デフォルトの名無しさん
2009/12/08(火) 13:46:29■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【日本人の旅行離れ】国内旅行すら行けなくなった……オーバーツーリズムだけじゃない 旅行者減少の異常事態 [ぐれ★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★12 [蚤の市★]
- 中国の渡航自粛要請1カ月 大阪の観光バス予約ゼロ、東北にも波及 [蚤の市★]
- 【神戸】エレベーター「かご」なく男性医師が転落死 大手「三菱電機ビルソリューションズ」の担当者、安全装置切り放置か [ぐれ★]
- 【福岡】「人が道路に寝込んでいた。顔面から出血し、うなり声をあげている」 福岡市中央区で男性はねられ死亡 タクシー運転手逮捕 [ぐれ★]
- 女性天皇「賛成」69%、将来の皇位継承「不安」68%…読売世論調査 [蚤の市★]
- 高市、メガソーラー廃止。環境破壊が社会問題化 [792147417]
- クリスマスに何かする「予定なし」は54%。 過去最高水準に。ケーキの値上げもあって節約志向へ [663766621]
- 他人のリクエストで自分の癖と異なる絵を上げる絵師いるじゃん?
- 🏡おい!返事しろ︎︎!知的障害者!
- 日本人がホルホルの対象にしている生物、海外にも生息すると判明 [603416639]
- キミプリ→ゼッツ→ゴジュウ→猥談
