Help us understand the problem. What is going on with this article?

【Swift】三項演算子をswitch文に置き換えたら読みやすくなった

三項演算子はよく使いますが、条件が増えるとわかりづらくなるという難点があります。
そこで、switch文にしたら読みやすくなったという話です。

もともとのコード

三項演算子
let condA = true

let v = condA ? 1 : 2

条件が一つしかない場合は、三項演算子を使うとわかりやすいコードになります。

ところが、ここに新しい条件CondBが増えると、

条件が2つある場合
let condA = true
let condB = false

let w = condA ? (condB ? 1 : 2) : 3

このように入れ子になってしまいわかりづらくなります。

switch文を使って書き換えてみる

上のコードをswitch文で書き換えてみます。

switch文を使った場合
var x:Int
switch(condA, condB) {
case (true,true):
    x = 1
case (true,false):
    x = 2
case (false,true), 
     (false,false):
    x = 3
}

condAcondBの状態ごとにどのような値になるかが一目瞭然です。

さらに改良してみる

上のコードをさらに改良して、代入式にまとめてみます。

改良をしたコード
let y = { condA, condB -> Int in
    switch(condA, condB) {
    case (true,true):
        return 1
    case (true,false):
        return 2
    case (false,true),
         (false,false):
        return 3
    }
}(condA, condB)

このようにすることで、CondACondBを入力としてyの値を定める、という全体の流れを表現することができるので読みやすくなります。

まとめ

三項演算子を使っていて条件が増えた場合、switch文を使ったら条件が直感的に表現されたので読みやすいコードになりました。また、switch文は条件のすべてを列挙する必要があるため、複数の条件があったときに考慮もれの防止にも繋がります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした