三項演算子について

f:id:ryoutaku_jo:20190423205019p:plain

【結論】

三項演算子(条件演算子)とは、
 戻り値を条件によって切り替えたい場合に
 利用する演算子

・IF文だと複数行にまたがる処理を
 一行で記述する事が出来る

・但し、複雑な条件式で使用すると
 可読性が悪くなる傾向にある。

【目次】

【本題】

三項演算子について

三項演算子(条件演算子)とは、
条件によって戻り値を変えたい場合に利用する演算子です。

条件式 ? tureの戻り値 : falseの戻り値

上記の通り、?の手前に条件式を記述し、
その後ろに条件式がtureの場合とfalseの場合の値を、
:を挟んで記述します。

x = 1

x == 1 ? "OK" : "NG"
=> "OK"

x == 2 ? "OK" : "NG"
=> "NG"

IF文との比較

先ほどのコードを、IF文に書き換えると、
下記の様になります。

x = 1

if x == 1
  "OK"
else
  "NG"
end

=> "OK"

三項演算子だと1行で済みましたが、
IF文では5行必要になります。

この様に、三項演算子であれば、
IF文で複数行にまたがる様な処理も、一行で記述出来る利点があります。

可読性の問題

しかし、複雑な条件分岐を含む処理だと、
三項演算子では可読性が低くなります。

if x == 1
  "OK"
elsif x == 2
  "NG"
else
  "unknown"
end

例えば、上記のIF文を三項演算子に書き換えると
下記の様になります。

x == 1 ? "OK" : x == 2 ? "NG" : "unknown" 

正直見づらいです。

なので、複雑な条件分岐を含む処理を記述する場合は、
大人しくIF文で記述した方が良いと考えられます。

参考情報

条件演算子(?:) - 条件分岐 - Ruby入門

三項演算子?:は悪である。 - Qiita

条件演算子(三項演算子)を可読性低いとか言わせない - Qiita

《今日の学習進捗(3年以内に10000時間に向けて)》

・本日CTOに1on1をして頂いたが、
 悩んでいたコードレビューについて、解決の道筋が見えた。
 まずは、バグを出さないという事を最優先にして、
 チェックの観点を整理していく。

・CKEditorを導入するにあたり、
 別プロジェクトのコードを参考にしているが、
 npm/package.json/webpackなど
 フロント周りのツールの仕組みを理解していない為、
 コードをそのまま流用するだけでは、上手く実装できなかった。
 これらツールの概要を押さえた上で、改めて実装に取り組みたい。

学習開始からの期間 :137日
今日までの合計時間:1311h
一日あたりの平均学習時間:9.6h
今日までに到達すべき目標時間:1251h
目標との解離:60h
「10,000時間」まで、

残り・・・「8689時間!」