佐々木屋

技術的なことから趣味まで色々書きます

三項演算子の有効活用

課題

例えば以下のような処理を考えます。

bool syoriFlg = true;
string naiyo = "";
if (syoriFlg ) {
    naiyo = "hoge";
}
else {
    naiyo = "piyo";
}
Dim syoriFlg As Boolean = True
Dim naiyo As String = ""
If syoriFlg Then
    naiyo = "hoge"
Else
    naiyo = "piyo"
End If

処理フラグの条件によって変数の値を変える場合です。

リファクタリング

可読性が落ちている原因は、やはり条件分岐です。条件分岐が増えれば増えるほどフローチャート上右に広がってしまいます。これらを改善するには2パターンあります。

三項演算子を利用する方法

これは真偽がほぼほぼ同じ割合で発生する場合に有効です。

bool syoriFlg = true;
string naiyo = syoriFlg ? "hoge" : "piyo";
Dim syoriFlg As Boolean = True
Dim naiyo As String = If(syoriFlg, "hoge", "piyo")

三項演算子はうまく使えば非常に見やすくなりますので覚えておきましょう。

②初期値を設定する方法

発生頻度が明らかに傾いている場合、例えば真:偽=9:1とかの場合です。これは初期値をほぼ発生する方にしておき、あまり発生しない方を変更処理として記述します。

bool syoriFlg = true;
if (!syoriFlg) naiyo = "piyo";
If 
Dim naiyo As String = "hoge"
If not syoriFlg Then naiyo = "piyo"