Kotlin Code Smell 31 - Not Polymorphic
A Path to Clearer Code and Stronger Design

I've started to work as a software engineer at 2014, however, I started to write code at high-school.
My first language was Assembly, but still, I fall in love with the possibilities to make the computer to do as you wish, shortly after that I started to write in C.
Later on I studied a practical engineering in electricity, and during this time discovered that I preferred much more writing code than design electrical components.
As a result of this understanding I decided to switch and study bachelor degree in computer science in Reichman university, where the focus was of the Java language.
Today I'm working at SumUp using Kotlin, SpringBoot & Micronaut, Cassandra and Kafka
Problems
- Missed Polymorphism
- Coupling
- IFs / Type check Polluting.
- Names are coupled to types.
Solutions
- Rename methods after what they do.
- Favor polymorphism.
Sample Code
Wrong
class Array {
fun arraySort() { ... }
}
class List {
fun listSort() { ... }
}
class Set {
fun setSort() { ... }
}
Right
interface Sortable {
fun sort()
}
class Array : Sortable {
override fun sort() { ... }
}
class List : Sortable {
override fun sort() { ... }
}
class Set : Sortable {
override fun sort() { ... }
}
Conclusion
Naming is very important. We need to name concepts after what they do, not after accidental types.




