条件演算子ちゃんが可愛すぎてやばい
普段プログラミング関連の記事しか書いていない日は、PVがガクッと落ち込む傾向にあるにも関わらず、昨日の条件演算子ちゃんの記事は結構なPVを獲得し、コメントまで頂けました。嬉しかったので、もっと条件演算子ちゃんの話をしてみます。
呼び方の話
私には謎のポリシーがあります。それは、"正式名称で呼びたい"ということです。略語なんかも好みません。「アプリ」、「APP」とか呼ばずにアプリケーションと呼びます。"="を「イコール」とか呼ばずに、「代入演算子」と呼びます。
この例は、条件演算子ちゃんにも当てはまります。「三項演算子」と呼ぶ方が大多数ですが、Wikipediaにも書いております通り、「条件演算子」を「三項演算子」と呼ぶのは、厳密に言うと正しくないのです。じゃあ、私は「条件演算子」と呼びたいなと。
三項演算子 - Wikipedia
まあ、大多数が「三項演算子」と呼ぶのであれば、そう呼ぶことが正義だとも思います。結構前にあれだけ叩かれ続けたウエイターさんの
コーヒーになります。
も、ここまで浸透してしまえば丁寧に聞こえてしまうものです。むしろ、
コーヒーでございます。
と言われた方が、正解なはずなのに若干の違和感を覚えてしまうほどです。マジョリティは正義なのです。それでも、私がマイノリティになろうとするのは、ただのエゴです、ポリシーです。
条件演算子ちゃんの活躍シーン
私が愛してやまない可愛い条件演算子ちゃんの活躍シーンは、まだまだございます!それは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人きりの時(ローカルなプロジェクトの時)だけは、思い切り優しくしてあげようと思うのです。皆の前(オープンなプロジェクト)では、そうできないところが、私の弱くて卑怯なところです。結局は自分が可愛いんです、最低です、自己嫌悪します。
何を言ってんだか。ではでは。