Bruce.です。
#押井守のラジオ番組は聴いていてなかなか興味深い話題が出ることがある
davi さんは書きました (2008/03/02 2:56):
> | { titles[$1] }
> | $2 == "著者" { author[$1] = $3 }
> | $2 == "訳者" { trans[$1] = $3 }
> | $2 == "出版社" { pub[$1] = $3 }
> | $2 == "出版年" { year[$1] = $3 }
> |
> | END{
> 以下ry)
>
> 書き方のことで伺います。
> メイン部分の1個目、{ titles[$1] }で一度閉じていますよね。
>
> “上の例に限って”考えると、たとえば
>
> ex.1 ---------------
>
> { titles[$1]
> $2 == "著者" { author[$1] = $3 }
> $2 == "訳者" { trans[$1] = $3 }
> $2 == "出版社" { pub[$1] = $3 }
> $2 == "出版年" { year[$1] = $3 }
> }
> ---------------
>
> ex.2 ---------------
>
> { { titles[$1] }
> $2 == "著者" { author[$1] = $3 }
> $2 == "訳者" { trans[$1] = $3 }
> $2 == "出版社" { pub[$1] = $3 }
> $2 == "出版年" { year[$1] = $3 }
> }
> ---------------
>
> ex.3 ---------------
>
> titles[$1];
> $2 == "著者" { author[$1] = $3 }
> $2 == "訳者" { trans[$1] = $3 }
> $2 == "出版社" { pub[$1] = $3 }
> $2 == "出版年" { year[$1] = $3 }
> ---------------
>
> でも通りそうですが、上の例に“限らず”、汎用的に
> 考えるとき、 { } の付け方って、何か規則性というか、
> ハマリを避けるために必要な観点ってありますか?
1と2は syntax error ですが…
それと3は違う動作をしますよ。
ということで条件判定に付随するブロックについてということだろうと
推測した上で書きますが、
あまり深いネストはしない方がよいという一般的な理解はあると思います。
if (...) {
if (...) {
if (...) {
if (...) {
のような。
せいぜいが三段くらいまででしょう。
それ以上深くなるようなら、ロジックを見直すとか関数にくくりだすとかします。
> おそらく皆さんは、感覚的に習得しているんだろうと思うの
> ですが。
>
> しかし、感覚的なものって、教科書的には扱いづらいので、
> 割と明示的には説明されないんじゃないかな、と。
if のネストに関して云えば説明している書籍はあります。
ひょっとしてブレースの配置のスタイルということであるなら、
Cでは「宗教論争」を巻き起こす種になってます :)
--
木村浩一
I thought what I'd do was, I'd pretend I was one of those deaf-mutes or should I?
mail kbk [at] kt.rim.or.jp
web www.kt.rim.or.jp/~kbk/zakkicho/
homepage3.nifty.com/farstar/