booleanを反転(トグル)させる方法4選

 コードを書いていると、booleanの状態を反転させたいケースがあります。

様々なコーディング方法

 プログラミングは、求まる結果はひとつでも、どのように実装するかは自由ですし、様々な方法があります。

 今回は、Javaを例にとって色々やってみましょう。

if~elseで普通に書く

 普通に書いてみます。


private boolean sw = false; if(sw == true){ sw = false; }else{ sw = true; }

 普通ですね。

 プログラミングを覚えたての人でもこれなら簡単に書けます!

三項演算子使ってみる

 ちょっとテクニカルなフリをしてみます。

private boolean sw = false;

sw = sw ? false : true;

 おっ。なんかそれらしいですね。デキる人みたいです。ただ読みづらいですね。

 一目で何が行われているかわかりづらく、良いコードとは言えません。

演算子を使ってみる

 無理やりやってみます。

private boolean sw = false;

sw = (sw == false);

 目的は達成できていますが、これもわかりづらいですよね。

否定演算子を使ってみる

 これが本命でしょう。

private boolean sw = false;

sw = !sw;

 非常に分かりやすく、簡潔です。

まとめ

 単純な動作ひとつとっても、様々な実現方法があります。

 答えはいくつもありますので、最適な方法は自分で探すしかありません。

 多くのプログラマにとって読みやすいコードを書くことを心掛けたいものです。

2018/3/12コード例から型が抜けていた問題を修正。
ご指摘ありがとうございます!

コメント

  1. 匿名 より:

    最近Javaを勉強し始めたものなのですが
    変数swに型を書いていないのは、初期値のbooleanリテラルから、型推論されるからでしょうか?

    • tam-tam より:

      鋭いご指摘ありがとうございます!
      仰るとおり型の指定は必須です。修正させて頂きました。

      確かにJava8には型推論がありますが、ラムダ構文などで引数を受け取ったり、総称型やワイルドカードを指定する際に、あえて型を明示する必要がない程度のものです。

      型推論といえば、JDK10からvar構文が実装されるようです。それは仰っている使い方(右辺の構文によって型が推論される)と同じ使い方が出来るので楽しみですね。

  2. […] JSの比較演算子なりとVue.jsのmethodsを組み合わせればいけそう。。。 […]

  3. […] JSの比較演算子なりとVue.jsのmethodsを組み合わせればいけそう。。。 […]

  4. […] JSの比較演算子なりとVue.jsのmethodsを組み合わせればいけそう。。。 […]