Reader small image

You're reading from  Kotlin Design Patterns and Best Practices - Second Edition

Product typeBook
Published inJan 2022
Reading LevelBeginner
PublisherPackt
ISBN-139781801815727
Edition2nd Edition
Languages
Right arrow
Author (1)
Alexey Soshin
Alexey Soshin
author image
Alexey Soshin

Alexey Soshin is a software architect with 15 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design.
Read more about Alexey Soshin

Right arrow

Validating input

Input validation is a necessary but very tedious task. How many times did you have to write code like the following?

fun setCapacity(cap: Int) { 
    if (cap < 0) { 
        throw IllegalArgumentException() 
    } 
    ... 
}

Instead, you can check arguments with the require() function:

fun setCapacity(cap: Int) { 
    require(cap > 0) 
}

This makes the code a lot more fluent. You can use require() to check for nulls:

fun printNameLength(p: Profile) { 
    require(p.firstName != null) 
}

But there's also requireNotNull() for that:

fun printNameLength(p: Profile) { 
    requireNotNull(p.firstName) 
}

Use check() to validate the state of your object. This is useful when you are providing an object that the user may not have set up correctly:

class HttpClient { 
  ...
lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Kotlin Design Patterns and Best Practices - Second Edition
Published in: Jan 2022Publisher: PacktISBN-13: 9781801815727

Author (1)

author image
Alexey Soshin

Alexey Soshin is a software architect with 15 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design.
Read more about Alexey Soshin