|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Почитай что я выше ответил chpasha . Ты точно так же пытаешься приплести здесь Package Scan (@Component) Код: java 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2021, 22:21 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
chpasha , я не понимаю к чему ты клонишь. Ты пометил Configuration класс с помощью @Component, это какую-то проблему решает? А тут ты явно описывал объявление @Component & @Service, т.е. это однозначно про Package Scan: chpasha В смысле, ты говоришь "объявляем бин не описывая его конструктор" т.е. Код: xml 1.
тоже самое мы делаем без java based configuration просто объявив класс Component или Service. Или какой случай имеется в виду? Напиши пример ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 08:28 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev это какую-то проблему решает? кстати решало - из-за cglib @Configuration не работал в подписанных джарниках, но мы конечно не об этом. Stanislav Bashkyrtsev Опиши полноценно какую мысль ты пытаешься донести. что преимущество, описанное тобою имеет смысл только для кода, который мы не контролируем, а в остальных случаях упомянутый тобою вариант без конструктора является аналогом объявления @Component/@Service с @Autowired конструктором/сеттерами или final полями ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 09:44 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
chpasha Stanislav Bashkyrtsev Опиши полноценно какую мысль ты пытаешься донести. что преимущество, описанное тобою имеет смысл только для кода, который мы не контролируем, а в остальных случаях упомянутый тобою вариант без конструктора является аналогом объявления @Component/@Service с @Autowired конструктором/сеттерами или final полями Вообще удивительно насколько этот, казалось бы, простой момент всех путает. Я когда провожу курсы вижу, что очень многие (независимо 1 год поработали или 10) точно так же путаются и долгое время не могут поверить что Package Scan не имеет отношение к Java @Configuration. Эт прям какая-то установка, которую не сломать за один раз. Видимо это потому что аннотации @Component мы ставим в Java коде. chpashaчто преимущество, описанное тобою имеет смысл только для кода, который мы не контролируемЯ в последних своих проектах не используют Package Scan вообще - ни для своего кода, ни для внешнего. Не вижу проблем объявить бин явно. Советую и другим использовать меньше магии и больше явного кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 10:01 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev о package scan я кажется понял, что ты на самом деле хочешь сказать ;) есть xml-based configuration, annotation-based configuration и java-based configuration (и миксы всего со всем) - формально @Component/@Service/@Autowired относится ко второму, а не к третьему виду конфигурации (хотя технически это уже не так, поскольку и Component и Service это тоже конфигурации, а Configuration это Component) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 10:26 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Я в последних своих проектах не используют Package Scan вообще я в данный момент как раз размышляю о преимуществах и недостатках смешивания данных подходов Stanislav Bashkyrtsev Не вижу проблем объявить бин явно лишняя работа получается, как getter/setter писать, только хуже, так как те хоть автоматом можно сгенерить. но зато "конфигурация" получается только в строго отведенных местах, а не разбросана по всему коду. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 11:01 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
chpasha есть xml-based configuration, annotation-based configuration и java-based configuration (и миксы всего со всем) - ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 11:17 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Конфигурации это еще пол-беды. Скоро будет так. Ты набираешь код. Устал. Давишь ALT+Space или еще какую-то волшебную комбинацию. Твой исходник летит в какое-то ИИ облако. Анализируется. Потом тебе выкидывают 3-5 вариантов как завершить исходник. Постепенно у тебя мозг разжижается. Думать не надо. Остается лениво перебирать варианты. ИИ, как сомелье (вспомнил Пелевина), просто предлагает тебе коробочные решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 14:47 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
mayton Постепенно у тебя мозг разжижается аналогия понятна, но от написания конструкторов и ручного освобождения памяти у тебя прокачивается не мозг, а пальцы на руках. Кому хочется потрахаться, тот может ваять окошки на winapi или mfc, но если окошки - это не самоцель, то берем более высокоуровневый инструмент и не тратим время. Т.е. те самые пресловутые "шашечки" vs "ехать" ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 15:09 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Да. Или вопрос из серии где заканчивается Python и начинается С++? Никто не знает. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 15:12 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Честно скажу, 5 страниц ниасилил. Возможно, автору надо поставить плагин lombok в IntelliJ IDEA. При его отсутствии все сеттеры будут отображаться как синтаксические ошибки, даже если код нормально собирается с помощью mvn. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 16:48 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
chpasha mayton Постепенно у тебя мозг разжижается аналогия понятна, но от написания конструкторов и ручного освобождения памяти у тебя прокачивается не мозг, а пальцы на руках. Кому хочется потрахаться, тот может ваять окошки на winapi или mfc, но если окошки - это не самоцель, то берем более высокоуровневый инструмент и не тратим время. Т.е. те самые пресловутые "шашечки" vs "ехать" Ну MFC это и есть "более высокоуровневый инструмент" Пытался им пользоваться... не понравилось. Претензии теже, фиг поймешь, где что надо, в какой таблице какое событие описывать, что кодить во View, что в Controler'е и что в Document'е. Для простых задач, создать окошко, нарисовать две-три кнопки, подцепить окно и диалоги - вот реально WinApi и проще и короче. Самое главное, что код ПОНЯТНЫЙ, хорошо документированный (документация на WinApi) и гарантированна надежность работы. Проблема в том, что пытаясь упростить WinApi, для понимания которой достаточно 2-3 тоненьких книжек (в 1990-х была хорошая серия от компании Диалог) и доступ к документации reference от MS, создают библиотеки, что бы разобраться в которых и что-то начать делать, нужно прочитать до 5-7 тысяч страниц. Например высокоуровневый фреймворк Oracle ADF. Реально, читал все книжки, 5-7 тысяч страниц. На ряд интересующих в тот момент меня вопросов - ответов даже не нашел (нужно было сделать взаимодействие ADF и кастомного JavaScript с MapView ). Сделать то сделал, по примерам: поставьте такой триггер, вызовете такую функцию, сообщение передастся. Для видимости работы - достаточно. Но например описание механики работы рендеренга страниц, описание работы бизнес компонент для работы с базой - в документации нет, места в 7 тыс. страниц не хватило. Сложность программирования "на WinApi" подменили кажущейся простотой библиотек / FrameWork'ов, которые, на самом деле, имеют сложность в разы, а то и на порядки большую, чем низкоуровневое средство, которое они подменяют. И значительно хуже документированные, а внутренности работы часто вообще не документированы. Самое большая засада, что в библиотеках еще и свои парадигмы придумывают. Что добавляет и глюков, и сложности в освоении и миграции на новые хайповые технологии. Конструктор - сложно... это же память корректно в диструкторе очищать надо. Сделаем GC... сделали.. зато похерили диструкторы. В результате вместо относительно понятного memory leak (который программист ожидает ) получили мало понятный resource leak. Т.к. начинающий программист в лучшем случае считает, что система все сделает за него... а вот фиг... А в худшем случае , начинает пихать код в finallize, даже не понимаю, что это НЕ диструктор и код очистки ресурсов туда пихать не надо и даже нельзя . А потом ловим глюки. В JVM добавляем еще более мало понятные ключи настройки (глубина очереди вызовов finallyze в GC) и прочее и прочее. В результате, в реальном проекте работающем с RMI (remote method invocation), отхватываем тот же самый memory leak, которого в Java не бывает ))), и в течение нескольких месяцев пытаемся понять: толи программисты виноваты, толи настройки GC не правильные, толи оно так и должно работать. Т.к. в дампе памяти, висят гигабайты прокси от RMI, которые вроде как программисты и не создавали (оно само), должны непонятно как очищаться (дабы ссылки на данные объекты не локальные, а через RMI) и что уж совсем не понятно - что же с этим делать. Дока от GC приводит пару штук ключей, но как работают, как это мониторить, общедоступная дока нифига не описывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 17:03 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
mayton Конфигурации это еще пол-беды. Скоро будет так. Ты набираешь код. Устал. Давишь ALT+Space или еще какую-то волшебную комбинацию. Твой исходник летит в какое-то ИИ облако. Анализируется. Потом тебе выкидывают 3-5 вариантов как завершить исходник. Постепенно у тебя мозг разжижается. Думать не надо. Остается лениво перебирать варианты. ИИ, как сомелье (вспомнил Пелевина), просто предлагает тебе коробочные решения. Что значит "скоро", оно уже есть. Codota/Tabnine GitHub Copilot Правда, как в том анекдоте, такая фигня получается... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 17:13 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Да я видел демо с Co-Pilot. Вообще не впечатлило. Я задумался о другом. В принципе ИИ в том виде как мы его ожидаем может оказаться мертворожденным ребенком. Или гоммункулом. Но сама идея очень внимательного и вдумчивого описания Software Requirements или DSL прямо в коде - это хорошая идея над которой надо подумать. Может ИИ и не родится. Но родится новая дисциплина - техно-писательство где нужно будет просто формально описать что ты хочешь получить на выходе. Еще одна важная опция которую можно возложить на ИИ - это поиск ошибок, vulnerabilities, статический анализ кода. Вот уж где человек может ошибаться - так это как раз там. Творчества мало. В основном rules. И много- много inference. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 17:20 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
mayton, есть с этим очевидная проблема: если это формальное описание должно быть написано на натуральном языке, то придётся бороться со всеми его недостатками, типа нечёткости, противоречивости, неоднозначности. Если же пытаться формализовать язык спецификации, то так, собственно и появились языки логического программирования, типа Prolog, от которого произошёл и Erlang, например. С другой стороны есть BDD со всякими там Cucumber, которые подходят к этой проблеме с другого конца. Но, в итоге... Ну и, полагаю, все тут уже созрели для срача imperative vs declarative? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 18:00 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
chpasha, Конструктор не связан с ручным освобождением памяти. Память освобождается везде автоматом после выхода из области видимости. А вот конструктор надо писать везде. Параметры объекту нужны хоть в XML инжекции, хоть в java конфиге. Разница не так велика как кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 20:00 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev В результате, в реальном проекте работающем с RMI смотрю наболело ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2021, 22:46 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevНу MFC это и есть "более высокоуровневый инструмент" Пытался им пользоваться... не понравилось. Претензии теже, фиг поймешь, где что надо, в какой таблице какое событие описывать, что кодить во View, что в Controler'е и что в Document'е. Для простых задач, .... Самое главное, что код ПОНЯТНЫЙ, хорошо документированный (документация на WinApi) и гарантированна надежность работы. Проблема в том, что пытаясь упростить WinApi, ...., что бы разобраться в которых и что-то начать делать, нужно прочитать до 5-7 тысяч страниц. Например высокоуровневый фреймворк Oracle ADF. Реально, читал все книжки, 5-7 тысяч страниц. ..., описание работы бизнес компонент для работы с базой - в документации нет, места в 7 тыс. страниц не хватило. Сложность программирования "на WinApi" подменили кажущейся простотой библиотек / FrameWork'ов, ... часто вообще не документированы. Самое большая засада, что .... Конструктор - сложно... это же память корректно в диструкторе очищать надо. Сделаем GC... сделали.. зато похерили диструкторы. В результате вместо относительно понятного memory leak (который программист ожидает) получили мало понятный resource leak. Т.к. начинающий программист в лучшем случае считает, что ... и код очистки ресурсов туда пихать не надо и даже нельзя. А потом ловим глюки. ... и прочее и прочее. В результате, общедоступная дока нифига не описывает. Лень, в Высшей школе учился, был такой предмет как марксистко-ленинская философия ? Нет - Переходи в манагеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2021, 10:56 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
DocAl, я думаю что мы сейчас ожидаем рождения нового языка. Языка описания требований. Настолько формального что он сможет претендовать на DSL. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2021, 15:22 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
mayton DocAl, я думаю что мы сейчас ожидаем рождения нового языка. Языка описания требований. Настолько формального что он сможет претендовать на DSL. Уже было. Рождалось. Много раз. Даже есть более-менее живое. Но продолжают "рождаться" и продолжаем "ожидать" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2021, 15:28 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Ну... чтож. Запасёмся оптимизмом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2021, 15:34 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
mayton Языка описания требований. Ладно с языком. Требования даже на нормальном русском/английском и то сложно описывать. Знаю: Oracle AIM RUP Если говорить об описании UML Но не взлетает. Если взлетает, то летит низенко-низенко хотя и переводит тонны денег но вот сейчас появились анотации... и заживем! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2021, 15:36 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
Леонид. Нет. Ну это вообще не про это. Между UML, RUP и кодом существует пропасть. И вот я говорю о том языке который эту пропасть заполнит. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2021, 15:46 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
mayton, Уже есть Lua предназначен для пользователей, не являющихся профессиональными программистами,... https://ru.m.wikipedia.org/wiki/Lua ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2021, 15:56 |
|
Оптимальное написание кода. Как сделать последовательное присвоение
|
|||
---|---|---|---|
#18+
mayton Леонид. Нет. Ну это вообще не про это. Между UML, RUP и кодом существует пропасть. И вот я говорю о том языке который эту пропасть заполнит. Может пропасть и существует. Но как много людей в этой конференции реально этим пользовались? Какие успехи? Бог с ней с пропастью. Пусть на русском бизнес-требования в структурированном виде опишут. Но нет этого Ну и тот же UML создавался/рекламировался как средство кодогенерации. Я не пользовался, не знаю. Но об эффективности результата подозреваю. Сталкивался со множеством графорисовалок программ/бизнес процессов с помощью мышки: Oracle BPM Oracle Workflow Oracle Scripting Oracle Data Integrator (ETL) Результаты разные. От нарисовать - повесить на стенку. Нарисовать - обработать напильником. Вплоть до нарисовать и оно даже работает в продакшене до сих пор. Но почти всегда, значительно проще было бы ту же работу сделать "традиционным образом". И точно всегда, без написания реального кода с помощью клавиатуры - все равно не обойтись. AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2021, 15:59 |
|
|
start [/forum/topic.php?fid=59&msg=40096270&tid=2120352]: |
0ms |
get settings: |
25ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
455ms |
get tp. blocked users: |
1ms |
others: | 400ms |
total: | 968ms |
0 / 0 |