Re: こんなコード書く?
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) と書きます。
これはデバッガを使ったとき、操作が楽だからです。
神田敏広
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735