IIJIMA Hiromitsu <delmonta@ht.sakura.ne.jp> writes:

> return ((n<1||n>12)?name[0]:name[n]);
> 
> 私なら通常はif文で書きますけど(例外:式しか書けない場所)、
> 皆さんはこういうコードは書きます?

書きません。なぜなら
  - return に () は付けない。
  - 12 というマジックナンバーを埋め込んだりしない。
  - 例外は後ろに持ってくのが趣味なので
      (n < 1 || n > 12) ではなく (n >= 1 && n <= 12) と書く。
  - てゆーか <= は嫌いなので (n >= 1 && n < 13) と書く。
  - そもそも n という名前をインデクスに使うのが嫌。
  - 演算子の前後は空白いれる。

というのは冗談ですが、


三項演算子を使うかという話でしょうか?

結構使いますよ。
いま勘定したら、手元の 385 個のソースファイルのうち 105 個で使ってた。

初期化のとことか。(これは「式しか書けない」ので例外?)

  r1 = p1ok ? PPM_GETR(pixels[y1][x1]) : 0;
  g1 = p1ok ? PPM_GETG(pixels[y1][x1]) : 0;
  b1 = p1ok ? PPM_GETB(pixels[y1][x1]) : 0;

のように、行数節約 && 見た目をすっきりさせたいとことか。
printf の引数とか。
もちろん return にも。


逆に f(g()) みたいなのはネストせず x = g(); f(x) と書きます。
これはデバッガを使ったとき、操作が楽だからです。


神田敏広