In this chapter, we reviewed best practices in Kotlin, as well as some of the caveats of the language. Now you should be able to write more idiomatic code that is also performant and maintainable.
You should make use of scoping functions, but make sure not to overuse them, as they may make the code confusing, especially for those newer to the language.
Be sure to handle nulls and type casts correctly, with let(), the Elvis operator, and smart casts that the language provides.
In the next and final chapter, we'll put those skills to use by writing a real-life microservice using everything we've learned.