笑劇のNullチェック(論理演算での初歩の初歩のミス)

Android開発をポチポチとやっておりまして、そうすると幾つかクラッシュ情報などが挙がってきます。

その中で今回は自分のバグを生んだ爆笑出来るコードを晒してみる。

皆さんはそれを見て嘲笑ってください。

まず今回問題となったコードですがtimer処理を行なうもので、ユーザのボタンクリックに合わせてtimerを一々止めるというものでした。
で実際に合ったコードが以下のようなものでした。

	@Override
	public void onClick(View v) {
           .....
           if(usingTimer || timer != null){
                  timer.cancel(); //ここでヌルポ発生
                  timer = null;
           }
           ......
        }

上の条件式見てあれっ?これNullチェックしてるじゃん?とか思ったのですが、

「Nullチェックすり抜けた・・・。これは・・・どうしたらいいんだ?」

と、思考停止しかかったのですが、

「んなこたぁない。チェック方法が間違ってるんじゃない」

と言われもう一度見てみると。

論理演算子が and(&&)じゃなくて or(||)になってる・・・キャ (/∀\)

つまりusingTimerがtrueだった場合後ろがNullだろうとそうでなかろうと実行されてしまうわけでw

もうね、気がついた時には吹いてしまった。

正しくは

	@Override
	public void onClick(View v) {
           .....
           if(usingTimer && timer != null){
                  timer.cancel(); //もう何も怖くない
                  timer = null;
           }
           ......
        }

ですね。

もう何回引っかかてるんだよ・・・。

もうミスらないため、ここに記述しておく。