01 Dec 2020
Kotlin extension functions let us express our algorithms as functional pipelines. We can see these as chains of calls, where the output of a stage is fed into the next. Here’s a chain that reads lines representing CustomerData
from a reader
:
val valuableCustomers = reader .buffered() .lineSequence() .drop(1) // header .map(String::toCustomerData) .filter { it.score >= 10 } .sortedBy(CustomerData::score) .toList()
Chains like this are nice and easy to read (at least for English speakers), as we start at the...
22 Nov 2020
It’s been a long time since my last post. This is largely because my writing efforts have been directed towards a book! Nat Pryce (co-author of the excellent GOOS) and I are hard at work on Java to Kotlin, A Refactoring Guidebook, due to be published in 2021 by O’Reilly. You can read our work in progress on O’Reilly Online Learning.
Nat and I are both fans of tiny-types. The basic idea here is to have a...
02 Jul 2019
Recap
In the previous episode, we looked at parsing a log file. We initially used data classes to represent the different types of events that we saw, but found that they could be clumsy when representing type hierarchies, and we had to fall back on reflection in order to select properties specified by strings.
In contrast using maps to represent the data was (in this instance) less awkward, and they made it easy to select properties by name....
30 Jun 2019
I’ve been listening to an (and another) excellent podcast by Clojure programmers recently and learned that nobody builds classes in Clojure; and certainly not to represent data. Instead they populate maps for all the uses where Kotlin developers would reach for a data class.
I’ve got very used to data classes and like them a lot, but there are certainly situations in which they don’t shine. Today I’m going to look using maps instead.
The Brief
Let’s...
20 Jun 2019
Nat Pryce and I have been asked to run our popular Refactoring to Kotlin Workshop at KotlinConf 2019 in Copenhagen.
If you are attending the conference but relatively new to the language it is an excellent way to get up to speed on the language and its idioms.
More Details