短絡評価を乱用しないでください🙅♂️
多くのプログラミング言語では、論理演算は短絡評価されます。Kotlinの文法であれば、 a && b
で a
がfalseであれば b
は評価されず、 a || b
で a
がtrueであれば b
は評価されないということです(無駄なので)。
これを利用して、ハック的なコードを書くことが可能です。
わかりやすい例を提示します。以下のコードでは、 someBool()
がtrueを返した時は some()
のブロック内の処理は短絡評価されるため、 doSomething()
は評価されません。一方、 someBool()
がfalseを返した時は doSomething()
が評価されます。
fun some() {
someBool() || doSomething()
}
fun someBool(): Boolean = Random.nextBoolean()
fun doSomething(): Boolean {
println("do something here")
return true
}
この &&
||
の短絡評価を利用すると、 someBool()
がtrue / falseの時にだけ特定の処理を行う、という処理を書くことができるわけですが、あまり行儀が良くないので1、基本的にはやめましょう。
今回の例はまだわかりやすいですが、 if (someCondition() || anotherCondition()) {}
のように、 if
の条件式内で何らかの副作用が発生するような短絡評価の乱用は、厳に慎むべきでしょう。
Kotlinには、 and
演算子と or
演算子が存在します。これらの演算子はそれぞれ &&
演算子と ||
演算子と似ていますが、 and
演算子と or
演算子は短絡評価されず、完全評価されます。すなわち、演算子の左側の値がtrueだろうがfalseだろうが、右側の値も評価される、ということです。
こちらはこちらで、無駄に処理が行われてしまうことにつながるため、注意が必要です。
-
個人の見解です。 ↩︎
書いている人 😎

茨城県つくば市在住のモバイルアプリケーションアーキテクト(Androidが得意です)。モバイルアプリのアーキテクチャ、自動テスト、CI/CDに興味があります。いわゆる「レガシーコード」のリファクタリング・リアーキテクチャが好きです。
👉 もっと詳しく
著書 ✍
Android 依存性注入 ヒッチハイク・ガイド🧳
Androidアプリでの依存性注入(Dependency Injection)に入門するためのガイダンスです。依存性注入の概念やメリットを理解し、Dagger Hiltを用いてAndroidアプリに適用する方法を解説しています。
ソフトウェアデザイン 2023年6月号📚
特集「クリーンアーキテクチャとは何か?」の第5章「モバイルアプリ開発における実践」を執筆しました。
Android クリーンアーキテクチャ ヒッチハイク・ガイド🧳
Androidアプリでのクリーンアーキテクチャに入門するためのガイダンスです。クリーンアーキテクチャの概念を理解し、Androidアプリに適用する方法を解説しています。
Android ユニットテスト ヒッチハイク・ガイド🧳
Androidアプリのユニットテストに入門するためのガイダンスです。初学者が混乱せずにAndroidアプリのユニットテストを書き始めることができる、ということを目的としています。
Android MVVMアーキテクチャ入門🛠
Androidアプリ開発の初学者に向けた、MVVM(Model-View-ViewModel)アーキテクチャの入門書を書きました。初学者の方を確実にネクストレベルに引き上げる技術書です。NextPublishingより出版されています。