はじめに
メンターの方にコードレビューして頂いた時に指摘された部分です。
指摘された部分
まずは、改修する前のコードです。
func hogehoge(bool: Bool) {
if bool == false {
// falseの時の処理
}else {
// trueの時の処理
}
}
一見、何の変哲もないメソッドですが、これでは駄目です。
何が駄目なのかを説明する前に、上記のコードを改修してみて違いを比べてみましょう。
改修後のコードです。
func hogehoge(bool: Bool) {
if !bool {
// falseの時の処理
}else {
// trueの時の処理
}
}
どこが改修されたか分かりますか?
falseが消えて、!
が付きましたね。
これは、Bool値に対して!を一番前にくっつける事で否定
を表すことができます。
※因みに!は論理否定演算子
と呼ばれます。
var bool = true
!bool // false
この!を用いるとシンプルに書くことができ、判定する時に
true
やfalse
といった値を書かなくてもよくなります。
更に冒頭で出てきたコードはこのように書くこともできます。
func hogehoge(bool: Bool) {
if bool {
// trueの時の処理
}else {
// falseの時の処理
}
}
trueの時の処理と、falseの時の処理を逆
にしてしまえば
わざわざ!を使わなくてもよくなります。
では、なぜ駄目なのか?
改修前・後の両方は意味合いとしては同じなので動きますが、コードの可読性
が下がってしまいます。
例えば、以下のようなコードがあったとします。
var bool = true
if !bool != false {
// trueの時の処理
}else {
// falseの時の処理
}
非常に読みにくい
ですよね。
私も理解するのに時間が掛かりました...。
このように理解するのに時間が掛かってしまうと、無駄な時間が発生してしまいます。
もしかしたら上記のようなコードが原因で致命的なミス
を起こしてしまうかもしれません。
なので、Bool型で判定する時にはtrueやfalseを使わないようにコードを書いてみましょう!
おわりに
今回は、Bool型で判定する時に気をつけたいことでした。
コードレビューで指摘されてなかったら、ずっと改修前のようにBool型を書いていたと思います。