KOSEN{BLOG}について

Swift Tips 美しい条件分岐{1行で条件分岐を書く方法}

条件分岐はプログラミングにおいて一番使われるコードである。条件分岐を制するものはプログラミングを制すると言うことで、ちょっとしたコツで読みやすくなるTipsを伝えようと思う。

平凡で普通なよくある条件分岐

trueならばfalseにしfalseならばtrueにするという条件分岐をしばしば使う。どんな言語でもそれは共通すると思う。

例えば,ボタンを押した時にチェックマークがついていない時はチェックをつけて,チェックがついているときはチェックを外す。みたいなシチュエーションでフラグを条件分岐を使って処理させる。

if boolValue == false{
	BoolValue = true
}else{
	BoolValue = false
}

このように書くと思う。しかし,これは小さいプログラムだと良いがプログラムが大きくなってくると,このプログラム5行が邪魔で仕方なくなる。可読性や効率をあげるにはもっと賢い書き方がある。

この発想はなかった条件分岐

BoolValue = !BoolValue

ブラボー!
美しい。どこからみても可憐で見惚れる。そんなコードである。

三項演算子を添えて。

先ほどのコードはブール値を入れ替えれば良く、「!」を使って入れ替えただけで,発想さえあれば誰でも思いつくだろう。
では次に,条件分岐で何かのパラメータを変えたいと思った時のコードについて説明を行う。

以下のコードは実際にcellのチェックマークをつけたり外したりするコードである。

内容はさておき,コードの表記方法をみてもらいたい。
まずこれが普通の書き方。


if item.done == true{
  cell.accessoryType = .checkmark
}else{
  cell.accessoryType = .none
}

何をしているかというと,
BoolValueがtrueならば→チェックマークをつける
BoolValueがfalseならば→何もつけない(消す)


if アイテム == true{
  アクセサリー = チェックマーク
}else{
  アクセサリー = 無し
}

といったコードになっている。

平凡である。このコードを眺めているとつまらない日常が今にも始まりそうである。

このコードをどう調理していくか?それは,「Ternary Operator」(三項演算子)である。三項演算子は,

 value     = condition ? valueIfTrue : valueIfFaluse
変更したい値      条件   trueならば↑   falseならば↑ 

このような書き方で書いていく。JavaScriptやPythonなど様々な言語で使用されている。

では「Ternary Operator」を使用したらどのようなコードになるのかを見てみる。

エクスペクト Ternary Operator’s!!!

cell.accessoryType = item.done ? .checkmark : .none

さすが,この条件分岐もたった1行で完結してしまう。

まとめ

簡単な条件分岐ではこのようにたった1行で書くことができるということが理解できると思う。

慣れでif elseを書いてしまいがちだが,可読性が下がる上に初心者まるだしになってしまうのでこれらのTipsを押さえていって欲しい。

コメントを残す

メールアドレスが公開されることはありません。