Return early when input is too small to use.

guard-clause A guard clause handles an invalid or special case before the main work.

Guard Clauses

name
GuardClauses.kt
Replay: real traced execution (multi-file project)
fun displayName(name: String): String {
    if (name.isBlank()) {
        return "missing"
    }
    if (name.length < 3) {
        return "short:$name"
    }
    return "name:$name"
}

fun main() {
    val name = "Mira"
    val label = displayName(name)

    println("name=${name.ifBlank { "blank" }}")
    println("label=$label")
}
fun displayName(name: String): String {
    if (name.isBlank()) {
        return "missing"
    }
    if (name.length < 3) {
        return "short:$name"
    }
    return "name:$name"
}

fun main() {
    val name = ""
    val label = displayName(name)

    println("name=${name.ifBlank { "blank" }}")
    println("label=$label")
}
fun displayName(name: String): String {
    if (name.isBlank()) {
        return "missing"
    }
    if (name.length < 3) {
        return "short:$name"
    }
    return "name:$name"
}

fun main() {
    val name = "Jo"
    val label = displayName(name)

    println("name=${name.ifBlank { "blank" }}")
    println("label=$label")
}
  1. name ← Mira

    11fun main() {12    val name→ Mira = "Mira" //@name="", "Jo"13    val label = displayName(nameMira)
  2. fun displayName(name: String): String

    1fun displayName(nameMira: String): String {2    if (name.isBlank()) {3        return "missing"4    }5    if (name.length < 3) {6        return "short:$name"7    }8    return "name:$nameMira"9}
  3. label ← name:Mira

    12    val name = "Mira" //@name="", "Jo"13    val label→ name:Mira = displayName(nameMira)1415    println("name=${nameMira.ifBlank { "blank" }}")16    println("label=$labelname:Mira")17}
    outputname=Mira
    label=name:Mira
  1. name ← (empty)

    11fun main() {12    val name→ (empty) = ""13    val label = displayName(name(empty))
  2. fun displayName(name: String): String

    1fun displayName(name(empty): String): String {2    if (name.isBlank()) {
  3. if (name.isBlank())

    1fun displayName(name: String): String {2    if (name(empty).isBlank()) {3        return "missing"4    }
  4. label ← missing

    12    val name = ""13    val label→ missing = displayName(name(empty))1415    println("name=${name(empty).ifBlank { "blank" }}")16    println("label=$labelmissing")17}
    outputname=blank
    label=missing
  1. name ← Jo

    11fun main() {12    val name→ Jo = "Jo"13    val label = displayName(nameJo)
  2. fun displayName(name: String): String

    1fun displayName(nameJo: String): String {2    if (name.isBlank()) {
  3. if (name.length < 3)

    4}5if (name.length2 < 3) {6    return "short:$nameJo"7}
  4. label ← short:Jo

    12    val name = "Jo"13    val label→ short:Jo = displayName(nameJo)1415    println("name=${nameJo.ifBlank { "blank" }}")16    println("label=$labelshort:Jo")17}
    outputname=Jo
    label=short:Jo