|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Большой Синий Кит Roman Osipov, Хорошо, есть java 8, есть лист объектов с 10 пропертями - этот лист нужно обойти, и, при определенном условии изменить изменить 1 или 2 поля объекта, и собрать обратно в коллекцию. Объект должен быть immutable, с правильным hashCode, equals, красивым toString() (включающий parent), наследоваться от другого ParentData, причем менять проперти нужно и те, что в парент. Напишите это, пожалуйста. class ParentData class Data extends ParentData var parentData = property1 var data = property2, property3 var dataList = List<Data> // process data list and update property1 and property3, get immutable collection of immutable objects. Ближе к коду! Да я уже написал это. Тут минута нужна, но товарищ, видимо, не может Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Все. Ждем товарища. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:55 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит, Для реальной обработки стримов данных обычно достаточно того, что объект сериализуется/десериализуется. Хэш код тут ни при чем. Еще раз повторяю - только в небольшом количестве случаев объекту реально надо прописывать хэш-код. Есть объекты с поведением, есть DTO - какой еще тип объектов можете назвать, который обширно используется в приложениях? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:59 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov Большой Синий Кит, Для реальной обработки стримов данных обычно достаточно того, что объект сериализуется/десериализуется. Хэш код тут ни при чем. Еще раз повторяю - только в небольшом количестве случаев объекту реально надо прописывать хэш-код. Есть объекты с поведением, есть DTO - какой еще тип объектов можете назвать, который обширно используется в приложениях? Короче, разработчик *распределенных* /и/ высоконагруженных приложений с 30-ти летним опытом, я тут ликбез по полной устраивать не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:00 |
|
jdk17
|
|||
---|---|---|---|
#18+
Без Lombok этот код не написать что ли? Если речь о двух классах с тремя свойствами, то в чём проблема написать все эти getter/setter вручную? Если у вас сотни или тыщи таких классов с десятками свойств, ну в IDE обычно есть средства автоматизации, которые за вас напишут этот boilerplate-код. Либо эта схема данных должна описываться в виде модели или на DSL, из которых нужный код может генериться. Не понимаю почему эта задача должна решаться именно Lombok'ом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:39 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Без Lombok этот код не написать что ли? Если речь о двух классах с тремя свойствами, то в чём проблема написать все эти getter/setter вручную? Если у вас сотни или тыщи таких классов с десятками свойств, ну в IDE обычно есть средства автоматизации, которые за вас напишут этот boilerplate-код. Либо эта схема данных должна описываться в виде модели или на DSL, из которых нужный код может генериться. Не понимаю почему эта задача должна решаться именно Lombok'ом. Послушайте, Вы притворяетесь, что ли? Дааааа.. видимо, правду пишут, что (как минимум) Java форум помер. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:48 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb двух классах с тремя свойствами Ares_ekb вас сотни или тыщи таких классов с десятками свойств Вы сами показываете какой то максимализм. Либо три либо миллион. Дак сколько соток копать лопатой? 3 или гектар? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:50 |
|
jdk17
|
|||
---|---|---|---|
#18+
Эта задачка слишком тривиальная. Сделайте мне допустим редактор ER моделей с помощью Lombok. Нужно чтобы модели, которые рисуют пользователи хранились в базе на сервере, чтобы было API для работы с моделями, чтобы сам редактор моделей был на клиенте в браузере. Для этого нужно дофига кода: 1) Код для работы с базой (например, Hibernate'овые Entity-классы) 2) DTO для передачи на клиент 3) Мапинги между 1 и 2 в обе стороны 4) REST API или что-то такое 5) Клиентский код (JavaScript-классы) Причём, если в этот редактор моделей я хочу добавить какие-то новые типы объектов (пусть это будет редактор каких-нибудь расширенных ER моделей или вообще других моделей), то мне нужно обновить код по всем этим 5 пунктам. Толку от того, что Lombok избавит меня от написания getter/setter, создания билдеров и т.п. Мне нужно на порядок больше boilerplate-кода, совершенно разного. Один из вариантов - это описать схему данных в виде какой-нибудь Ecore-метамодели и сгенерить из неё весь этот код. В Lombok функциональность мизерная, но проблем со сборкой и т.п. он добавляет порядком, вечно что-то отваливается. Если, уж, нужно упрощать разработку, то использовать нормальные решения, а не урезанные костыли, которые больше проблем добавляют. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:56 |
|
jdk17
|
|||
---|---|---|---|
#18+
Я полностью за автоматизацию разработки, но Lombok - это автоматизация на таких минималках, что толку от неё вообще не видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:59 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Roman Osipov, Код будет? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Как и говорил ранее, хэш/эквалс в большинстве случаев не нужен. А когда нужен без проблем вставляется вызов Appache Commons HashCodeBuilder. Что там, что там - одна строка. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:59 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb, Вы перепутали ветки форума. По умолчанию в java и особенно в ОРМ говорят о CRUD приложениях. А потом уже о ГИС, Редакторах и ERP ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:00 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Я полностью за автоматизацию разработки, но Lombok - это автоматизация на таких минималках, что толку от неё вообще не видно. - назовите линейку продуктов - чел выше наехал на либу не уточняя минималки ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:02 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb, Нет-нет, это слишком тривиальная задача. Я пока еще не придумал, что конкретно попросить Вас мне тут сделать, но Вы обязательно сделайте. С ломбоком или нет - не важно. Главное, что-нибудь поумнее, с пунктами и подпунктами. Можно любое приложение, но не тривиальное, и чтобы функциональность была не мизерная.... или даже мизерная, не суть - просто я уверен, тут все наслаждаются Вашим умом в любом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:08 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov PetroNotC Sharp Roman Osipov, Код будет? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Как и говорил ранее, хэш/эквалс в большинстве случаев не нужен. А когда нужен без проблем вставляется вызов Appache Commons HashCodeBuilder. Что там, что там - одна строка. Ну вот и выяснили, какой Вы специалист. Это все очень печально. Более комментировать не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:10 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov PetroNotC Sharp Roman Osipov, Код будет? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Как и говорил ранее, хэш/эквалс в большинстве случаев не нужен. А когда нужен без проблем вставляется вызов Appache Commons HashCodeBuilder. Что там, что там - одна строка. авторКак и говорил ранее, хэш/эквалс в большинстве случаев не нужен. А когда нужен без проблем вставляется вызов Appache Commons HashCodeBuilder. Что там, что там - одна строка. У меня лучше: Код: java 1.
+ Стримы тоже не нужны, проперти обновлять не надо, объекты иммутабл не надо, классы тоже, да вообще, выходит, что ничего не надо, все тлен - что так, что этак с точки зрения вечности это все глупая трата времени... Но при желании, можно вставить весь Apache Commons, можно и Apache Spark - не суть. А давайте вообще все вставим? Ну просто, ради интереса. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:20 |
|
jdk17
|
|||
---|---|---|---|
#18+
Уууууууууууууу Я рад, что Blazkowicz и Mayton продолжают присутствовать на этом форуме. Честно говоря, не знаю, как они это выдерживают. Говорю без всякой иронии. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:26 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит Blazkowicz ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:31 |
|
jdk17
|
|||
---|---|---|---|
#18+
А почему я должен что-то "выдерживать" или не выдерживать? Единсвтенное что меня печалит - это вялая активность всего форума. Мы выдержали Луговского, Дедала и Студентика. А сегодняшний трафик - это просто капающая вода из крана. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:57 |
|
jdk17
|
|||
---|---|---|---|
#18+
да, тоже интересно, есть на форуме еще кто-то моложе 40, засирающий код геттерами, сеттерами, билдерами вручную ? в чем бонус ручной работы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:01 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, в разных проектах использовали разные инструменты и подходы. Обычно схема такая. 1) Если есть много типового кода, значит можно его описывать в виде графической модели или придумать для этого специальный DSL, что позволит не писать лишнее. Хоть для графических моделей, хоть для DSL нужно разработать метамодель. Метамодель описывает семантическую, смысловую составляющую нашего языка. Например, мы делаем какую-нибудь учетно-аналитическую систему и в ней полно совершенно типовых формочек, типового API для доступа к данным, типовых DTO-классов, Entity-классов и т.п. Соответственно в нашей метамодели мы описываем бизнес-сущности, которые нам нужны: формочка, поле формочки, визард (последовательность формочек), правило валидации и т.д. Описать всё это можно в любой нотации: на языке UML, в виде ER модели, в табличке в Excel перечислить сущности и атрибуты - вообще без разницы. Очень часто для этого используется язык Ecore . В статье последняя картинка это как-раз пример Ecore-метамодели. В нашем случае была бы метамодель описывающая атрибуты и связи между такими сущностями как формочка, поле, визард и т.п. 2) Затем для этой метамодели нужно разработать конкретный синтаксис: либо сделать редактор диаграмм ( раз , два ), на котором люди смогут описывать уже конкретные формы, либо описать синтаксис DSL ( раз , два ), чтобы они всё это делали в текстовом виде. Для создания редакторов диаграмм можно использовать Sirius . По ссылке можно посмотреть много примеров разных нотаций для моделей. Для создания DSL раньше можно было использовать EMFText (он у меня в статьях описывается). Сейчас в основном используют Xtext , там смысл тот же. На этом этапе у нас есть инструмент с помощью которого пользователи системы или разработчики могут описывать формочки или что там ещё им нужно. 3) Теперь из этих моделей можно что-то генерить. Для генерации кода из моделей можно использовать Xtend . Сейчас ощущение, что его забросили. У него было две ключевые особенности. Он позиционировался как улучшенная Java, но с появлением Kotlin и улучшением самой Java это потеряло актуальность. И второй момент: на нём очень удобно писать кодогенераторы - для этого он и сейчас продолжает использоваться. Можно тупо писать кодогенераторы на Java, и часто так делают, но мне не очень нравится. Для генерации кода из Ecore моделей можно использовать Acceleo . Ещё один вариант - это не генерить код сразу из модели, а сначала преобразовать эту модель в другую модель, и затем последнюю сериализовать в текстовое представление. Например, мы в одном проекте описывали структуру документов на языке UML, описывали правила валидации этих документов на языке OCL . Затем генерили из всего этого AST (абстрактные синтаксические деревья) либо для XPath выражений, либо для Java кода. Правила преобразования исходного AST в результирующее описывали на языке QVTo . Полученное AST сериализировали в текст с помощью EMFText (либо сейчас это можно делать с помощью Xtext). Вообще, есть полно и других инструментов для кодогенерации и т.п. Смотрю на этот пост, на количество ссылок, аббревиатур и базвордов... Большой Синий Кит и так уже "наслаждается" моими умственными способностями, после этого поста на мне как на специалисте можно просто ставить клеймо профнепригодности. Наверное, да, Lombok будет попроще. В принципе, Lombok - это тоже один из инструментов модельно-ориентированной разработки. Единственное мы не создаём какой-то свой язык моделирования или DSL. Разработчики Lombok уже создали его за нас и встроили в Java в виде аннотаций. Наверное это имеет право на существование, но я для себя не вижу смысла. Либо автоматизация на уровне Lombok не нужна вообще, либо нужна нормальная полноценная автоматизация, для которой Lombok не достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:03 |
|
jdk17
|
|||
---|---|---|---|
#18+
H5N1 да, тоже интересно, есть на форуме еще кто-то моложе 40, засирающий код геттерами, сеттерами, билдерами вручную ? в чем бонус ручной работы ? Проблема в том, что эти геттеры, сеттеры, билдеры в большинстве случаев просто не нужны при разработке обычных приложений. Но их настойчиво лепят, а потом чтобы не лепить их вручную используют Lombok. Костыль на костыль ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:09 |
|
jdk17
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:15 |
|
jdk17
|
|||
---|---|---|---|
#18+
H5N1 засирающий код геттерами, сеттерами, билдерами вручную ? Обычно такие классы, у которых куча геттеров, это классы, описывающие какие-нибудь бизнес-сущности, какое-то состояние системы, может быть DTO (но действительно большой вопрос, нафига для них геттеры и сеттеры). Короче, за этими классами стоит какая-то схема данных. Если она небольшая, ну, сделаю я это вручную. Если большая, то буду описывать в полноценной модели. На мой взгляд Lombok - это тоже засирание проекта, лишние зависимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:20 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Например, мы делаем какую-нибудь учетно-аналитическую систему (Извините, не удержался) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:27 |
|
jdk17
|
|||
---|---|---|---|
#18+
а если на проекте сегодня 2 класса, завтра 4, послезавтра 6 что тогда. Через неделю начинать свою схему писать или через 10 дней. Свои генераторы моделей звучит красиво, в итоге есть шанс что кроме автора там ничего никто либо не разберет либо не захочет разбирать. Буквально недавно попробовал генератор моделей для swagger.json получалось так себе, пришлось выкинуть все что нагенерил (нечитаемо, compile errors, да и вообще все равно все руками проверять судя по ворнингам в логах). в пользу ломбока, практически все модели в пределах одной страницы не нужно листать ничего. Особенно если есть не просто getter а кастомный геттер. Его сразу видно. Хотя поначалу тоже было не хотелось это ломбок пользовать ибо в IDE генератор, а как разберешся как жил до этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:28 |
|
|
start [/forum/topic.php?fid=59&msg=40105809&tid=2120291]: |
0ms |
get settings: |
16ms |
get forum list: |
8ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
37ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
632ms |
get tp. blocked users: |
0ms |
others: | 3287ms |
total: | 3985ms |
0 / 0 |