За что я люблю Kotlin

Есть тысяча и одна мелочь, за которые Котлин можно любить (одно только отсутствие ; в конце строки чего стоит!). Я напишу о трёх с половиной, которые меня особенно зацепили.

Переменные и коллекции

Переменные по-умолчанию final, а коллекции по-умолчанию immutable. Если ты помнишь, в Java всё ровно наоборот - final нужно явно указывать, а коллекции - modifiable. Что это меняет? Оказывается, это сильно меняет стиль написания кода. Каждый раз, когда тебе нужно изменить какое-то значение, приходится вводить новую переменную (и думать над её именованием!). То же самое с коллекциями - нельзя просто взять и напихать в один массив, Котлин как бы подталкивает тебя больше работать со стримами, синтаксис которых, кстати, очень приятный. В целом могу сказать, что я стал чуть больше думать и чуть меньше писать и мне это нравится. Можно ли практиковать такой стиль в Java? Конечно, но потребуется писать чуть больше кода (каждый раз объявлять final) и следить чтобы коллекции тоже объявлялись immutable.

Data классы

Дата-классы, это абстракция для объектов бизнес-логики. Главная их особенность - они не могут быть наследованы. Никак. Это обеспечивает консистентность таких объектов на протяжении жизни приложения. Помимо этого, Котлин сгенерирует для полей такого класса геттеры, сеттеры, equals, hashCode и toString для полной совместимости с существующими библиотеками сериализации/десериализации данных. Ты наверняка слышал или используешь в своём Java-коде библиотеку Lombok, которая делает примерно то же самое. Теперь сравни:

Java + Lombok

@ToString
@AllArgsConstructor
@EqualsAndHashCode
@Getter
@Setter
public class Person
{
   private String lastName;

   private String firstName;
}

Kotlin:

data class Person(val lastName: String, val firstName: String)

Если быть до конца честным, в Lombok есть аннотация @Data, которой можно заменить несколько дефолтных аннотаций. Но лично мне приятней иметь нативную поддержку дата-классов, которым, кстати, посвященно целых несколько глав в нетленке “Effective Java”.

Совместимость с java

Да, можно спокойно жить с Java и Kotlin кодом одновременно. При этом можно как вызывать Java из Kotlin, так и наоборот. А это значит, что не нужно ждать “удобного случая” попробовать новый язык на новом проекте. Можно просто брать и начинать писать. Вперёд! ;)

comments powered by Disqus