Validation
How many times did you have to write code like this:
fun setCapacity(cap: Int) { if (cap < 0) { throw IllegalArgumentException() } ... }
Instead, you can check arguments with require()
:
fun setCapacity(cap: Int) { require(cap > 0) }
This makes the code a lot more fluent.
You can use require()
to check for nested 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 provide some object that the user may not have set up correctly:
private class HttpClient {
var body: String? = null
var url: String = ""
fun postRequest() {
check(body != null){
"Body must be set in POST requests"
}
}
fun getRequest() {
// This one is fine without body
}
}
And again, there's a shortcut for null
: checkNotNull()
.