ma2のblog - わんくま版(仮)

うどん、より、そば

目次

Blog 利用状況

ニュース

Xbox360ゲーマータグ

リンク

ブログ内検索

書庫

日記カテゴリ

三項演算子

コーディングスタイル(R.Tanaka.Ichiro's Blog)を読んでいて思ったことがあります。

三項演算子を禁止している案件で仕事したことのほうが多いです。
たしか、MISRA-Cで禁止してたような気がします。
禁止していないところは「誰も使わないから制限対象にしない」という理由で禁止していません。

ちなみに自分は使う派です。
で、使わない党の方に「暗号みたいなソレ、可読性に関わるからやめて欲しい」といわれたこともあります。
# けっこう根に持ってるwww

三項演算子はネストしなければ読みづらいことは無いと思います。

nVal1 = (bSw1 != FALSE) ? 1 : 0; // ネストしてない
nVal2 = (bSw1 != FALSE) ? ((bSw2 != FALSE) ? 2 : 1) : 0; // ネストしてる

条件ひとつで値を切り替えるのにif書いてelse書いてってするのを書くのが面倒なんですよね。
インクリメントも、

nNum = nNum + 1;

って書くのが面倒になったころに使い出したっけ(高校生のときぐらい)。
使わない人は面倒と思わないんですかね?

投稿日時 : 2008年6月26日 0:11

コメントを追加

# re: 三項演算子 2008/06/26 0:21 あんどちん

俺のエントリなんてスルーされるのさ…まぁそれはいいとしてw

「普通書かないからやめてくれ」と大分前に当時の上司に言われたときに。
「Cの規格上問題ないのに?アンタの普通が言語の普通なんだ」
と食って掛かったことがある。
因みに
> nVal1 = (bSw1 != FALSE) ? 1 : 0;
なら*あえて*こう書いていた時期がある
nVal1 = 0;
if(bSw1 != FALSE) { nVal1 = 1;}
理由はコンパイラの最適化がヘボい場合こう書いた方が高速なコードが生成される可能性があるので。
# 尚0/1という値は関係ない。

ついでに意地悪なことを書くと上記式はこれで同じ結果が得られる
nVal1 = (bSw1 != FALSE);


# re: 三項演算子 2008/06/26 8:59 ma2

すみません、今見た建設orz
真偽で掛け算はなかなか面白いですね。

> ついでに
サンプルを思いつかなかったので、突っ込まれてもしょうがないです。わかっておりますw

# re: 三項演算子 2008/06/26 17:14 st.lain

三項演算子大好きっ子です。が、それでもネストだけは
避けますね・・・。

> 三項演算子はネストしなければ読みづらいことは無いと思います。
CodeProjectに投稿されていた某コードに三項演算子の
2回ネストを見た記憶があるのですが、あれは暗号だと
思いました。 orz
(ひょっとすると、1回ネスト x2(True, Falseの)カモ
しれません。が、それでも十分に違和感を感じました)

# re: 三項演算子 2008/06/27 1:17 egtra

条件演算子のネストが見づらいのは書き方がおかしいからですよw。
http://hp.vector.co.jp/authors/VA010341/conditional.html

# re: 三項演算子 2008/06/27 10:14 ma2

> st.lainさん
> CodeProjectに投稿されていた某コード
そのコードに欲しい情報があった場合は我慢ですよw
キモとなる部分のために無駄な行数を省くという親切心からきっとそんな書き方を・・・これ以上のフォローは無理だorz

> egtraさん
> 条件演算子のネストが見づらいのは書き方がおかしいからですよw。
ページ見ました。
一行で書けることがウリじゃないんですね。
これは・・・仕事でやったら非難されそう。
真実だけどマイノリティ過ぎるwww

# NSNTuBhsXMMQZf 2021/07/03 3:54 https://www.blogger.com/profile/060647091882378654

Looking forward to reading more. Great article post.Thanks Again. Really Great.

# MUIQICneMuPYWaNoC 2022/04/19 10:39 markus

http://imrdsoacha.gov.co/silvitra-120mg-qrms

タイトル
名前
URL
コメント