powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Оптимальное написание кода. Как сделать последовательное присвоение
25 сообщений из 133, страница 5 из 6
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096162
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Почитай что я выше ответил chpasha . Ты точно так же пытаешься приплести здесь Package Scan (@Component)
это ты пытаешься приплести package scan. Configuration - это тоже Component, просто особенный - Configuration заворачиваются в CGLIB, а Component нет, но по сути одно - частный случай другого. Например Component удовлетворяет проверке на isConfigurationCandidate и потому, например, работает такое

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@Component
public static class Config {
    @Bean
    public SimpleBean simpleBean() {
        return new SimpleBean();
    }

}
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096213
chpasha , я не понимаю к чему ты клонишь. Ты пометил Configuration класс с помощью @Component, это какую-то проблему решает?

А тут ты явно описывал объявление @Component & @Service, т.е. это однозначно про Package Scan:
chpasha
В смысле, ты говоришь "объявляем бин не описывая его конструктор"
т.е.
Код: xml
1.
<bean name="myBean" class="MyBean"/> 


тоже самое мы делаем без java based configuration просто объявив класс Component или Service. Или какой случай имеется в виду? Напиши пример
Опиши полноценно какую мысль ты пытаешься донести.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096231
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
это какую-то проблему решает?

кстати решало - из-за cglib @Configuration не работал в подписанных джарниках, но мы конечно не об этом.

Stanislav Bashkyrtsev
Опиши полноценно какую мысль ты пытаешься донести.

что преимущество, описанное тобою имеет смысл только для кода, который мы не контролируем, а в остальных случаях упомянутый тобою вариант без конструктора является аналогом объявления @Component/@Service с @Autowired конструктором/сеттерами или final полями
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096237
chpasha
Stanislav Bashkyrtsev
Опиши полноценно какую мысль ты пытаешься донести.

что преимущество, описанное тобою имеет смысл только для кода, который мы не контролируем, а в остальных случаях упомянутый тобою вариант без конструктора является аналогом объявления @Component/@Service с @Autowired конструктором/сеттерами или final полями
Ну т.е. речь все-таки о package scan :) Я, наверно, 3й раз повторю - он не имеет никакого отношение к Java конфигурации, он возник в 2.5 когда Java конфигурации еще даже не было .

Вообще удивительно насколько этот, казалось бы, простой момент всех путает. Я когда провожу курсы вижу, что очень многие (независимо 1 год поработали или 10) точно так же путаются и долгое время не могут поверить что Package Scan не имеет отношение к Java @Configuration. Эт прям какая-то установка, которую не сломать за один раз. Видимо это потому что аннотации @Component мы ставим в Java коде.
chpashaчто преимущество, описанное тобою имеет смысл только для кода, который мы не контролируемЯ в последних своих проектах не используют Package Scan вообще - ни для своего кода, ни для внешнего. Не вижу проблем объявить бин явно. Советую и другим использовать меньше магии и больше явного кода.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096239
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
о package scan

я кажется понял, что ты на самом деле хочешь сказать ;)

есть xml-based configuration, annotation-based configuration и java-based configuration (и миксы всего со всем) - формально @Component/@Service/@Autowired относится ко второму, а не к третьему виду конфигурации (хотя технически это уже не так, поскольку и Component и Service это тоже конфигурации, а Configuration это Component)
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096256
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Я в последних своих проектах не используют Package Scan вообще

я в данный момент как раз размышляю о преимуществах и недостатках смешивания данных подходов

Stanislav Bashkyrtsev
Не вижу проблем объявить бин явно

лишняя работа получается, как getter/setter писать, только хуже, так как те хоть автоматом можно сгенерить. но зато "конфигурация" получается только в строго отведенных местах, а не разбросана по всему коду.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096270
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha
есть xml-based configuration, annotation-based configuration и java-based configuration (и миксы всего со всем) -
угу. Раньше было программирование и создание объектов конструкторами. Теперь прогеры стали стали конфигурастами как 1Сники. Там 1С конфигурация замещает программирование.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096350
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конфигурации это еще пол-беды. Скоро будет так. Ты набираешь код. Устал. Давишь ALT+Space или
еще какую-то волшебную комбинацию. Твой исходник летит в какое-то ИИ облако. Анализируется.
Потом тебе выкидывают 3-5 вариантов как завершить исходник. Постепенно у тебя мозг разжижается.
Думать не надо. Остается лениво перебирать варианты. ИИ, как сомелье (вспомнил Пелевина), просто
предлагает тебе коробочные решения.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096362
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Постепенно у тебя мозг разжижается

аналогия понятна, но от написания конструкторов и ручного освобождения памяти у тебя прокачивается не мозг, а пальцы на руках. Кому хочется потрахаться, тот может ваять окошки на winapi или mfc, но если окошки - это не самоцель, то берем более высокоуровневый инструмент и не тратим время. Т.е. те самые пресловутые "шашечки" vs "ехать"
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096364
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Или вопрос из серии где заканчивается Python и начинается С++? Никто не знает.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096437
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно скажу, 5 страниц ниасилил.
Возможно, автору надо поставить плагин lombok в IntelliJ IDEA.
При его отсутствии все сеттеры будут отображаться как синтаксические ошибки, даже если код нормально собирается с помощью mvn.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096449
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 приводит пару штук ключей, но как работают, как это мониторить, общедоступная дока нифига не описывает.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096460
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Конфигурации это еще пол-беды. Скоро будет так. Ты набираешь код. Устал. Давишь ALT+Space или
еще какую-то волшебную комбинацию. Твой исходник летит в какое-то ИИ облако. Анализируется.
Потом тебе выкидывают 3-5 вариантов как завершить исходник. Постепенно у тебя мозг разжижается.
Думать не надо. Остается лениво перебирать варианты. ИИ, как сомелье (вспомнил Пелевина), просто
предлагает тебе коробочные решения.

Что значит "скоро", оно уже есть.
Codota/Tabnine
GitHub Copilot
Правда, как в том анекдоте, такая фигня получается...
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096464
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я видел демо с Co-Pilot. Вообще не впечатлило.

Я задумался о другом. В принципе ИИ в том виде как мы его ожидаем может оказаться мертворожденным ребенком.
Или гоммункулом.

Но сама идея очень внимательного и вдумчивого описания Software Requirements или DSL прямо в коде - это
хорошая идея над которой надо подумать.

Может ИИ и не родится. Но родится новая дисциплина - техно-писательство где нужно будет просто
формально описать что ты хочешь получить на выходе.

Еще одна важная опция которую можно возложить на ИИ - это поиск ошибок, vulnerabilities, статический анализ кода.

Вот уж где человек может ошибаться - так это как раз там. Творчества мало. В основном rules. И много-
много inference.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096499
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, есть с этим очевидная проблема: если это формальное описание должно быть написано на натуральном языке, то придётся бороться со всеми его недостатками, типа нечёткости, противоречивости, неоднозначности.
Если же пытаться формализовать язык спецификации, то так, собственно и появились языки логического программирования, типа Prolog, от которого произошёл и Erlang, например.
С другой стороны есть BDD со всякими там Cucumber, которые подходят к этой проблеме с другого конца.
Но, в итоге...


Ну и, полагаю, все тут уже созрели для срача imperative vs declarative?
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096542
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
Конструктор не связан с ручным освобождением памяти.
Память освобождается везде автоматом после выхода из области видимости.
А вот конструктор надо писать везде. Параметры объекту нужны хоть в XML инжекции, хоть в java конфиге.
Разница не так велика как кажется.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096571
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
В результате, в реальном проекте работающем с RMI

смотрю наболело
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096647
ra-001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevНу MFC это и есть "более высокоуровневый инструмент"
Пытался им пользоваться... не понравилось. Претензии теже, фиг поймешь, где что надо, в какой таблице какое событие описывать, что кодить во View, что в Controler'е и что в Document'е.
Для простых задач, .... Самое главное, что код ПОНЯТНЫЙ, хорошо документированный (документация на WinApi) и гарантированна надежность работы.
Проблема в том, что пытаясь упростить WinApi, ...., что бы разобраться в которых и что-то начать делать, нужно прочитать до 5-7 тысяч страниц.
Например высокоуровневый фреймворк Oracle ADF. Реально, читал все книжки, 5-7 тысяч страниц. ..., описание работы бизнес компонент для работы с базой - в документации нет, места в 7 тыс. страниц не хватило.
Сложность программирования "на WinApi" подменили кажущейся простотой библиотек / FrameWork'ов, ... часто вообще не документированы.
Самое большая засада, что ....
Конструктор - сложно... это же память корректно в диструкторе очищать надо. Сделаем GC... сделали.. зато похерили диструкторы. В результате вместо относительно понятного memory leak (который программист ожидает) получили мало понятный resource leak.
Т.к. начинающий программист в лучшем случае считает, что ... и код очистки ресурсов туда пихать не надо и даже нельзя.
А потом ловим глюки. ... и прочее и прочее.
В результате, общедоступная дока нифига не описывает.
Лень, в Высшей школе учился, был такой предмет как марксистко-ленинская философия ? Нет - Переходи в манагеры.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096729
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DocAl, я думаю что мы сейчас ожидаем рождения нового языка.

Языка описания требований. Настолько формального что он сможет претендовать на DSL.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096733
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
DocAl, я думаю что мы сейчас ожидаем рождения нового языка.

Языка описания требований. Настолько формального что он сможет претендовать на DSL.


Уже было. Рождалось. Много раз. Даже есть более-менее живое.

Но продолжают "рождаться" и продолжаем "ожидать"
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096739
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... чтож. Запасёмся оптимизмом.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096740
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Языка описания требований.

Ладно с языком. Требования даже на нормальном русском/английском и то сложно описывать. Знаю:

Oracle AIM
RUP

Если говорить об описании

UML

Но не взлетает. Если взлетает, то летит низенко-низенко хотя и переводит тонны денег

но вот сейчас появились анотации... и заживем!
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096743
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонид. Нет. Ну это вообще не про это. Между UML, RUP и кодом существует пропасть.

И вот я говорю о том языке который эту пропасть заполнит.
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096748
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Уже есть
Lua предназначен для пользователей, не являющихся профессиональными программистами,...
https://ru.m.wikipedia.org/wiki/Lua
...
Рейтинг: 0 / 0
Оптимальное написание кода. Как сделать последовательное присвоение
    #40096749
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Леонид. Нет. Ну это вообще не про это. Между UML, RUP и кодом существует пропасть.

И вот я говорю о том языке который эту пропасть заполнит.


Может пропасть и существует. Но как много людей в этой конференции реально этим пользовались? Какие успехи?

Бог с ней с пропастью. Пусть на русском бизнес-требования в структурированном виде опишут. Но нет этого

Ну и тот же UML создавался/рекламировался как средство кодогенерации. Я не пользовался, не знаю. Но об эффективности результата подозреваю.

Сталкивался со множеством графорисовалок программ/бизнес процессов с помощью мышки:

Oracle BPM
Oracle Workflow
Oracle Scripting
Oracle Data Integrator (ETL)

Результаты разные. От нарисовать - повесить на стенку. Нарисовать - обработать напильником. Вплоть до нарисовать и оно даже работает в продакшене до сих пор.

Но почти всегда, значительно проще было бы ту же работу сделать "традиционным образом". И точно всегда, без написания реального кода с помощью клавиатуры - все равно не обойтись.

AFAIK
...
Рейтинг: 0 / 0
25 сообщений из 133, страница 5 из 6
Форумы / Java [игнор отключен] [закрыт для гостей] / Оптимальное написание кода. Как сделать последовательное присвоение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]