涼の成長記録

自らの人生に主導権を持つべく、独立を目指して2014年3月31日を持ってITエンジニアを退職。そんな23歳♂の成長記録。

条件演算子ちゃんが可愛すぎてやばい

普段プログラミング関連の記事しか書いていない日は、PVがガクッと落ち込む傾向にあるにも関わらず、昨日の条件演算子ちゃんの記事は結構なPVを獲得し、コメントまで頂けました。嬉しかったので、もっと条件演算子ちゃんの話をしてみます。

条件演算子を使いこなせない - 涼の成長記録

やっぱり条件演算子を使いたい - 涼の成長記録


呼び方の話

私には謎のポリシーがあります。それは、"正式名称で呼びたい"ということです。略語なんかも好みません。「アプリ」、「APP」とか呼ばずにアプリケーションと呼びます。"="を「イコール」とか呼ばずに、「代入演算子」と呼びます。


この例は、条件演算子ちゃんにも当てはまります。「三項演算子」と呼ぶ方が大多数ですが、Wikipediaにも書いております通り、「条件演算子」を「三項演算子」と呼ぶのは、厳密に言うと正しくないのです。じゃあ、私は「条件演算子」と呼びたいなと。
三項演算子 - Wikipedia

C言語など条件演算子 ? : が唯一の三項演算子であるため条件演算子の別名としてほぼ扱われている。


まあ、大多数が「三項演算子」と呼ぶのであれば、そう呼ぶことが正義だとも思います。結構前にあれだけ叩かれ続けたウエイターさんの

コーヒーになります。

も、ここまで浸透してしまえば丁寧に聞こえてしまうものです。むしろ、

コーヒーでございます。

と言われた方が、正解なはずなのに若干の違和感を覚えてしまうほどです。マジョリティは正義なのです。それでも、私がマイノリティになろうとするのは、ただのエゴです、ポリシーです。



条件演算子ちゃんの活躍シーン

私が愛してやまない可愛い条件演算子ちゃんの活躍シーンは、まだまだございます!それはconst修飾子による定数を初期化するシーンです。極端な例でいきますと、こんな感じです。

const string userMessage = (!fileName.empty()) ? fileName : "Not found.";


userMessageやらfileNameやら、シーンの想定が雑だということは置いておきまして、要するに条件分岐で定数の初期値が変わる場合です。これをif文でやろうとすると、当然コンパイルエラーです。

const string userMessage;
if (!fileName.empty()) {
    userMessage = fileName;
}
else {
    userMessage = "Not found.";
}


それでも条件演算子ちゃんを迫害しようとすると、わざわざルーチンを作らなければなりません。

const string userMessage = getFileName();

string getFileName() {
    if (fileName.empty()) {
        return "Not found.";
    }

    return fileName;
}


「あれ?ファイル名称取得処理が抽象化されて、より良くなったじゃない。」と私が少なからず感じてしまったことは置いておきまして(まあ、私ならルーチンの中も条件演算子で返しますが。)、ここはルーチンをコールすることによるオーバーヘッドがうんたらかんたら言って誤魔化すことにします。


でも、条件演算子ちゃんも悪くないでしょう?私が何故、こんなに条件演算子ちゃんを可愛がるかと言うと、学校のクラスで、スマートで美人で地味系な女の子が、"話かけ辛い"、"とっつきにくい"といった理由で迫害されていたら、純粋な男の子な私としては、胸がときめいてしまうわけです。今気付きましたが、音読み、訓読みの違いはあれど、○○子という名前もあいまってでしょうか。


私には条件演算子ちゃんを、そんな目で見ています。つまり、守ってあげたくなるタイプということです。世界中の皆が条件演算子ちゃんを迫害しようとも、私と2人きりの時(ローカルなプロジェクトの時)だけは、思い切り優しくしてあげようと思うのです。皆の前(オープンなプロジェクト)では、そうできないところが、私の弱くて卑怯なところです。結局は自分が可愛いんです、最低です、自己嫌悪します。


何を言ってんだか。ではでは。