【Kotlin】条件分岐何使ってる?if?when?【Android】
皆様ご無沙汰しております。
Androidエンジニアのじゅんじゅんです。
オミクロン株来てますねぇ。。。
比較的、飲み会など楽しいコミュニケーションができる場が多くなってきたと思ったんですけどね。。。
皆さんも気を付けてお過ごしください・・・( ;∀;)
はじめに
というわけで皆さん。
Kotlinでコードを組む際に、条件分岐を行うケースが存在すると思います。
if だったり、whenだったりを使用しますが、
どちらも同条件で使用した場合、以下の様にアプリ上も同じように動作します。
/*「if」のコード*/
val a = 0
val b = 0
if (a = b) {
log.d("test", "aとbは等しい")
} else {
log.d("test", "aとbは等しくない")
}
/*「if」のログ出力*/
test::aとbは等しい
/*「when」のコード*/
val a = 0
val b = 0
when {
a = b -> log.d("test", "aとbは等しい")
else -> log.d("test", "aとbは等しくない")
}
/*「when」のログ出力*/
test::aとbは等しい
今回は、ifとwhenの使い分けについて解説していきたいと思います。
条件内処理が複雑な場合・・・
前項までの内容では、同様の処理を書いた場合にwhenのほうが簡潔に記載できていると思います。
行数も少なく済んでおり可読性も高いと思います。
しかし、条件内の処理が増えた場合はどうでしょうか。
ifとwhenで同様の処理を記載してみていきましょう。
/*「if」のコード*/
val a = "FFFF"
var stringToInt = 0
var intToString = ""
if (a == "FFFF") {
// String文字列の"FFFF"を16進数のIntに変換
stringToInt = a.toIntOrNull(16) // 65535
// Intの65535を16進数のString文字列に変換
intToString = foo.toString(16) // FFFF
log.d("test", "intToString = " + intToString )
} else {
stringToInt = a.toIntOrNull(16)
intToString = foo.toString(16)
log.d("test", "intToString = " + intToString )
}
/*「if」のログ出力*/
test::intToString = FFFF
/*「when」のコード*/
val a = "FFFF"
var stringToInt = 0
var intToString = ""
when (a){
"FFFF" -> {
// String文字列の"FFFF"を16進数のIntに変換
stringToInt = a.toIntOrNull(16) // 65535
// Intの65535を16進数のString文字列に変換
intToString = foo.toString(16) // FFFF
log.d("test", "intToString = " + intToString )
}
else -> {
stringToInt = a.toIntOrNull(16)
intToString = foo.toString(16)
log.d("test", "intToString = " + intToString )
}
}
/*「when」のログ出力*/
test::intToString = FFFF
どうでしょう?
whenの場合ネストが深くなるため、条件内の処理が多い場合見づらくなっていませんか?(私はそう思います・・・笑)
結局どうなの?
可読性の向上を図って、条件内の処理が複雑になる場合はifがおススメ。
対象的に条件内の処理が簡潔にできる場合は、whenがおススメ。
さいごに
どうでしたでしょうか。
今後条件分岐を実装する際には、気にかけて見てみるといいと思われます。
その他Android関連の記事
- 【Kotlin】ConstraintLayoutの相対的なView指定方法【Android】
- 【Android】入門!Activityのライフサイクルとは?
- JavaからKotlinに移行したAndroidエンジニアが困った!!スコープ関数について解説してみる
- 【Android】MVVMアーキテクチャについて
- 【Hyperion】Android開発でおすすめのライブラリ!Hyperionの紹介【Android】
- 【Android】実務で使えるアプリのレイアウト検証で使える知識~レイアウトの図り方・方法~
- 【ADB】コマンドで操作するAndroid開発 〜コマンド紹介編〜
- 【注意!】Androidアプリのリリースパッケージが変更?APK?AAB?【Android】
- AtomicDesignとは?簡単解説【デザインパターン】
- 【Charles】端末通信を監視してデバッグしてみよう【HTTP通信】