Re[8]: Догонит ли net java?
От: · Великобритания  
Дата: 05.12.22 15:10
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>·>"2 — нет и это хорошо бы видеть" — зачем видеть отсутствующий геттер-сеттер?

vsb>Я про то, что 2 — не автосгенерированы, а написаны вручную с нетривиальной логикой. И эту логику хочется видеть. Если у нас .NET с его get/set, там это прекрасно видно.
vsb>Лично я это делал так: у меня были нетривиальные методы сверху, а автосгенерированные в отдельном блоке, помеченном специальными комментариями, которые идея умеет находить и сворачивать. Но это уже костыли.
А, понял. Я вообще избегаю такое. Нетривиальные геттеры-сеттеры чаще с толку сбивают, чем пользу приносят. Тем более когда их 2 из 40.

vsb>·>Обычно получается так, что API описывается каким-то внешним способом (FIX, swagger, avro, protobuf, етс) и код таких классов генерируется.

vsb>Такой подход не пробовал, я пишу руками всё, автосгенерированные классы мне не нравятся (если только я сам не писал этот автогенератор).
Суть в том, что api обычно уже имеет некое описание независимое от каких-либо ЯП. Поэтому генерить из этих описаний java-код вполне разумно. Пишешь генератор ты сам или используешь готовый — неважно.

vsb>·>Не, record вполне готов. Туда пихать ничего лучше не надо. Если что-то добавлять для билдеров, то это пусть лучше будет какая-то другая фича.

vsb>record готов для крошечных классов вроде Point(int x, int y). Хранить там 50 полей это безумие. Пока не будет синтаксиса для создания/изменения с указанием каждого имени. Собственно этот синтакс и обещают и скорей всего он будет. Но когда — :hz:
По-моему record создавали с другой целью — для pattern matching. Если что-то и сделают, то это будет какой-то другой элемент языка.

vsb>·>В c# {get;set;} — это встроенная фича языка, а в java это реализуется библиотечно с помощью Annotation Processor, как частный случай. Поэтому нет смысла пихать какой-то новый синтаксис.

vsb>Lombok это не библиотека. Это хак, который не должен работать и когда-нибудь перестанет. И тогда придётся запускать какой-нибудь lombokc вместо javac, как и должно быть по-хорошему изначально.
Не скажу за весь lombok, но по-моему геттеры-сеттеры можно генерить используя вполне себе стандартный annotation processor.

vsb>>>lombok это да, это единственное, что хоть как-то спасает. Но надо понимать, что lombok это ещё один язык, похожий на Java. Я бы предпочёл писать на Java, а не на lombok.

vsb>·>Согласен. Впрочем создать dto+builder+withers+toString можно при отсутствии альтернатив.
vsb>Можно, но это костыли от недостатков языка, а не нормальная ситуация.
Ну если недостаток языка покрывается библиотекой, основанной на стандарте языка, то это наоборот — достоинство. Вместо всяких хитрых хотелок есть механизм для реализации произвольных хотелок.

vsb>Я не считаю, что .NET идет правильным путем, суя в язык как сорока всё блестящее. И Java делает правильно, не торопясь с фичами. С тем же async/await они торопиться не стали и правильно сделали, сейчас вырисовывается более правильное решение. Но в некоторых случаях это приводит к перегибам.

java как в том анекдоте про двух быков: "мы медленно-медленно спустимся с горы...".
Проект медленно пишется и годами поддерживается большими командами.
А если надо быстро-быстро бежать, то есть всякие груви котлины и скалы.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.