Комментарии 26
А мне нравится такая запись:
ImageSets(
inCircle = true,
needFit = true,
defaultDrawableResource = 0
).let { print(it) }
Приятно читать :)
Дело в том что в Kotlin куда больше прекрасных возможностей для написания красивого и выразительного кода, а читая такие посты у читателей будет создаваться именно негативное впечатление.
Я не утверждаю, что Kotlin — язык, на который непременно нужно полностью перейти с Java. Это личный выбор каждого разработчика. Если для выполнения задач человеку хватает Java — почему нет? Более того, сама парадигма котлина о совместимости с явой — утверждает то же самое.
Lombok сам по себе весит 1400кб, значительно увеличивает время сборки, а так же сложность самого проекта. О влиянии на скорость работы конечного кода не знаю, но подозреваю, что тоже влияет. Kotlin предоставляет тот же функционал, но уже из коробки, гораздо меньшими средствами. Разве это не хорошо?
- Чистой Java
- Java + Lombok
- Kotlin
Просто по моему это слишком сильное утверждение, ну и да байткод полученный с использование Lombok насколько я понимаю полностью эквивалентен коду с использованием бойлерплейта.
PS: в следующий раз буду читать комментарии ниже, что бы не дублировать.
habrahabr.ru/company/badoo/blog/329026
При инкрементальной сборке kotlin быстрее. Сомневаюсь, что при добавлении lombok проекты на java будут собираться быстрее.
Статья ни о чём. О какой защищённости речь? Примеры и на джаве и на котлине на уровне "начал чего-то учить, решил написать статью".
Для чистой Java есть прекрасная библиотека lombok. Ваш длиннющий пример превращается в что-то подобное:
@Data
@Builder
public class ImageSets {
Boolean inCircle = false;
Boolean needFit = false;
Size size = null;
int defaultDrawableResource = -1;
}
habrahabr.ru/post/150104
Могу поделиться замерами, что Kotlin по умолчанию собирается быстрее Java
habrahabr.ru/company/badoo/blog/329026
Тут уже было обсуждение.
Я думаю, не стоит объяснять, почему время сборки Java с подключением lombok будет определенно больше, чем на голой java.
По личным наблюдениям, занимаюсь обоими языками, Kotlin существенно быстрее.
Kotlin это никак не библиотека к Java
Только 50% языка это расширеные классы стандартной ява библиотеки. Со своим компилятором, а дальше называйте как хотите)
Пару слов в защиту Котлина:
Дизайн джавы стар! Многие механизмы давно вросли в языки (свойства, экстнешены, иммутабельность, нулабилити).
Изза старого дизайна не срослось с выводом типов (даймонд синтакс) и вариантностью (in/out удобнее чем вилдкардс), не получилось убрать треугольные скобочки.
Ребята из JetBrains, вроде как много лет непосредственно работают с JVM делайя шустрый комплишн для идеи. Не мало знают о и ее компиляторе, и о дестятке других в придачу (есть из чего выбирать фичи).
Можно псиать библиотеки в рамках старого дизайна (обвешать все аннотациями, и навставлять треугольных скобочек друг в друга), а можно написать свой язык, используя накопленные знания и опыт. А за 6 лет разработки уж наверняка
Не нужно держаться за старое, а если и нужно, то 100%-ный интероп вам поможет :)
Ваш пример с буленовскими флажками под каждое свойство и нуллабл полем — признак нарушения single resposibility. Я бы использовал другую крутую возможность котлина — sealed class и сделал бы несколько вариантов картинок, которые используются конкретно в проекте. Бонусом будет использование конструкции when для обработки всех возможных вариантов изображений в проекте, проверяемое на этапе компиляции
Защищенность переменных в Kotlin на примере Java