2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Bool型で判定する時に気をつけたいこと

Last updated at Posted at 2021-02-08

はじめに

メンターの方にコードレビューして頂いた時に指摘された部分です。

指摘された部分

まずは、改修する前のコードです。

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

この!を用いるとシンプルに書くことができ、判定する時に
truefalseといった値を書かなくてもよくなります。

更に冒頭で出てきたコードはこのように書くこともできます。

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型を書いていたと思います。

2
2
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?