|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Добрый день, В систему будут поступать объекты "Документ", нужно проводить валидацию документов, согласно списку проверок из БД. Проверки в БД могу быть включены (true) или отключены (false). Т.е. если сегодня включены проверки 1, 2, 3, и 5, то на завтра, пользователь может изменить количество и номера проверок на 1, 3, 4. Какой паттерн проектирования здесь можно применить? Что бы не писать конструкцию: Код: java 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 09:20 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks, Почему у многих такая маниакальная не любовь к if, case, for?)) В каком виде проверка лежит в бд? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 09:34 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Aleks_Aleks, Почему у многих такая маниакальная не любовь к if, case, for?)) Мы не индусы, что бы нам платили за количество строк кода)) PetroNotC Sharp Aleks_Aleks, В каком виде проверка лежит в бд? Скорее всего, буду из БД получать список "SELECT check FROM checks WHERE status = true;" конвертить его в List<Check> а дальше как-то проверять, что если в списке есть проверка 1 то выполнить проверку "№ документа", если есть проверка 2 то проверить "Дату документа" и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 09:47 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Я думаю использовать паттерн Command, код уже реализован на паттерне Chain of Responsibility просто классы, положить в БД, получить список классов, на всех классах вызвать метод execute годный контент? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:01 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks, Будет меньше кода если все условия выстроим в цепочку? strim2 = streamMy.filter(check==true) 2. Я спросил какой вид в бд имеет проверка "Дата документа"? Что лежит в текстовом поле? Sql.? Dll? Скрипт? Jar? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:04 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks Я думаю использовать паттерн Command, код уже реализован на паттерне Chain of Responsibility просто классы, положить в БД, получить список классов, на всех классах вызвать метод execute годный контент? То есть есть много исполнителей а не проверок. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:06 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks, Почему нет паттерн ORM? Если бы он был, то ни одного слова о бд не было бы в топике. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:08 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Aleks_Aleks, 2. Я спросил какой вид в бд имеет проверка "Дата документа"? Что лежит в текстовом поле? Sql.? Dll? Скрипт? Jar? Пока точно не известно, данная таблица еще не реализована, скорее всего там будет храниться код проверки "CHECK_01_02_02" но можно положить и имя класса или еще что нить... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:08 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks, Ну и на всякий теория. Валидация проходе в слое бизнес логике БЛ. Она пишется заранее и юзверь не ставит галочки что проверять. В общем случае... Абстрактно говоря. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:10 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks PetroNotC Sharp Aleks_Aleks, 2. Я спросил какой вид в бд имеет проверка "Дата документа"? Что лежит в текстовом поле? Sql.? Dll? Скрипт? Jar? Пока точно не известно, данная таблица еще не реализована, скорее всего там будет храниться код проверки "CHECK_01_02_02" но можно положить и имя класса или еще что нить... В БД будет храниться только код и название проверки и еще статус вкл/выкл, сама реализация проверки будет в Java Class ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:11 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks, А условия OR AND, скобки, меньше больше где? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:14 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
т.е. общий смысл такой, есть Код: java 1. 2. 3. 4. 5. 6.
есть проверки Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:17 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks, If doc.подписан == гендир ИЛИ врио выделитКредит() Как тут галочками? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:18 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks т.е. общий смысл такой, есть Код: java 1. 2. 3. 4. 5. 6.
есть проверки Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:21 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks, Извини, пока что ООП головного мозга. Тебе на галеры надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:23 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Если этих чекеров ощутимо больше 5, я бы добавил в таблице уникальное поле "имя чекера", а в коде по полю создавал соответствующую имени реализацию. Т.е. грузим только те, что активны, создаем реализации и возвращаем прикладному коду. Самый интересный вопрос - как именно и где создавать и описывать реализации, тут возможны варианты. Самое примитивное - мапа имя-класс, более продвинутое - как-то через DI, если используется. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:28 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
chpasha, Имя Класса. Потом фабрикой создавать полиморфные объект. И он инспектирует или валидирует. Тут много паттернов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:33 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Лучше сразу DSL )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:34 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks, Предметно-ориентированный язык (англ. domain-specific language, DSL — «язык, специфический для предметной области») — компьютерный язык, специализированный для конкретной области применения (в противоположность языку общего назначения, применимому к широкому спектру областей и не учитывающему особенности конкретных сфер знаний). Построение такого языка и/или его структура данных отражают специфи ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:36 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Имя Класса имя класса менее гибко, а так это "имя бина", за которым реализация может меняться ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:37 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks, If name == "CheckDate" obj = new CheckDate() else ... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:38 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
chpasha, Бин это класс в общем случае. Я о паттерне полиморфизм в ООП. Его препод раньше спросит. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:42 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Aleks_Aleks, Без if это фабрика классов рожает класс по строке ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:43 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 10:45 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Я бы здесь использовал паттерн Iterator. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 08:46 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
vas0, У него условия лежат в бд, поэтому нужен порождающий паттерн родить объект. А потом можно и итератор имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 08:57 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
В простейшем случае (проверок немного) сделал бы через enum. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 09:04 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Если случай навороченный, то через jpa single table inheritance ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 09:07 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
vas0, А без jpa/spring/boot могешь? Вопрос вроде java core ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 09:38 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
vas0, >Check check = Check.valueOf("<name from DB>"); // А это фабрика == Хмммм, А можно звать фабрикой фабрику Не классов? Имхо нельзя ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 10:21 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp А можно звать фабрикой фабрику Не классов? Ну надо в Коране для ООП посмотреть, это очень важный вопрос. Иначе ООП получится неправильное, а это прямая дорога в ад ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 12:07 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
забыл ник, Я вообще не люблю когда из перечислимое делают класс с поведением (. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 12:11 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp забыл ник, Я вообще не люблю когда из перечислимое делают класс с поведением (. Тут же главное идея в коде, а не слова. Все лучше чем твои разглагольствования. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 13:20 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
vas0, Я разглагольствую? С сказал мне не понравилось. Всё). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 13:56 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
vas0 Я бы здесь использовал паттерн Iterator. Iterator или Iterable ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2021, 14:43 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Aleks_Aleks, Почему у многих такая маниакальная не любовь к if, case, for?)) В каком виде проверка лежит в бд? потому что какой то клоун написал говно книгу - чистый код и там решил что если больше там 2 ифа - то все звиздец - твой код ->>>smell shit я скажу так - код должен работать прежде всего,а как он пахнет нужно на jmeter проверять , а не по клоунским заявлениям какого то дауна) а теперь все бегут менять ифы на стримы - тем самым убивая производительсность- и я как раз с этим говном щас столкнулся - 5 гиг даты перегоняю по 3 часа это писдец полный - зато с**а модные стримы везде,а по факту везде мемори лик ,так что я вот щас пишу тут сабж по 1 букве ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2021, 19:09 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
ну и если по теме ответить - никто нигде и никогда в реал лайфе не соблюдает эти солиды и не пишет код по патернам (вся эта вроде хорошая идея - начинается и кончается на собесах) ты будешь видеть постоянно классы по 100500 тысяч строк ,с дубляжом,с непонятными чудо переменными,один классс будет дублировать функционал другого и тд - это все результат коллективной разроботки и текучесть кадров вот тебе пример я пришел на проект - дали таску,пишу код- в качестве аргумента прилетает стринга в один из методов я должен ее обрабоать ,а том числе убрать теги код написал,метод по убиранию тегов тоже в какой то момент ,месяца через 4 я увидел что такой метод уже есть в проекте) и это везде и всюду- только если тим лид сам не кодит и на проекте уже 100500 лет - тогда да( но это почти фантастика) какая то куча юзлес интерфейсов ,которые друг друга дублируют итд и тп. Все эти патерны и шаблоны - все это конечно круто - но по факту ты скорей всего не встретишь в своей жизни ни одного проекта- которые соотвествует . поэтому я вот думаю и по факту так и есть - два критерия твоего кода 1.работает 2.прошел jmeter все эти высокие слорва о расширяемоси и тд - такая тупо дичь ,за 3года моей работы -никто чо то ниразу не расширился никуда) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2021, 19:42 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Ну это про разные вещи. JMeter - это производительность сетевых интеракций. Clean Code - это просто борьба со сложностью самого ВОСПРИЯТИЯ кода разработчиком. Вообще все задачи разработки можно описать двумя сверх-задачами. 1) Понимание проблем предметной области (домена). 2) Борьба со сложностью уже написанного кода. Вот Clean Code это про второе. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2021, 19:45 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
mayton Ну это про разные вещи. JMeter - это производительность сетевых интеракций. ну мы все в сети и если твой код быстр и работает - то лично мне как бизнесу было бы пох как он пахнет я про что говорю то - что конь ,писавший книгу - чистый код - сетовал на множественные ифы- и таки он подействовал на сознание программистов - теперь 2 + ифа = это считаеся зашквар и ребята начинают плодить стримы везде где нужно и не нужно - по факту нагружая систему так ,что простейшие операции вещаеют систему поэтому вот этих всех clean code надо бить палками,или пометить их говно книгу как @Deprecated ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2021, 20:04 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
asv79 mayton Ну это про разные вещи. JMeter - это производительность сетевых интеракций. ну мы все в сети и если твой код быстр и работает - то лично мне как бизнесу было бы пох как он пахнет я про что говорю то - что конь ,писавший книгу - чистый код - сетовал на множественные ифы- и таки он подействовал на сознание программистов - теперь 2 + ифа = это считаеся зашквар и ребята начинают плодить стримы везде где нужно и не нужно - по факту нагружая систему так ,что простейшие операции вещаеют систему поэтому вот этих всех clean code надо бить палками,или пометить их говно книгу как @Deprecated Тебе случалось когда-либо видеть "плохой код" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2021, 20:07 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
mayton Тебе случалось когда-либо видеть "плохой код" ? Твой вопрос можно задать иначе- тебе встречалось видеть хороший код? скажу честно - нет,я не видел код,который соотвествует солид и каким то патернам- все это существует лишь на собесах- поэтому на текущих собесах я бы про это вообще не спрашивал - ибо все это супер гуд - но по факту этого нигде нет я вот на текущем проекте как правильный разбраб покрывал свой код тестами - а потом понял что это нах никому не надо) ну и блет реально потратил месяц почти на эту разоработку - все свои выхи + переработки - и что ? кто то слово сказал? да всем пох Нужно уяснить главное правило - делай тока ту таску что тебе дали и забей на все остальное ( ибо всем пох) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2021, 20:16 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Стас выучил новое слово: JMeter! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2021, 20:33 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Alexander A. Sak Стас выучил новое слово: JMeter! не только выучил ,но и применяю- что 99% тут седящих не умеют) весь ваш clean code jmeter на одном месте вертел) пиши код чтоб он работал быстро - а не был красивым( что это вообще блеть за дичь - красивый код-давайте может лгбт код уже создадим) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2021, 21:06 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
asv79 mayton Тебе случалось когда-либо видеть "плохой код" ? я вот на текущем проекте как правильный разбраб покрывал свой код тестами - а потом понял что это нах никому не надо) ну и блет реально потратил месяц почти на эту разоработку - все свои выхи + переработки - и что ? кто то слово сказал? да всем пох Что с тобой? Выгорел? Насто3.14здела работа? Вот часто так... начинаешь за здравие а оканчиваешь просто ... вся жизть дерьмо ... все бабы стервы и солнце... и т.д. По поводу тестов - сделай соотв. выводы. Если они были избыточны, или сложнЫ, или их никто не заказывал. (Заказчик вообще практически никогда не заказывает тесты) - то значит у вас на проекте была неверная оценка объема работ. Потому что разраб на глаз оценивает то что надо сделать включая туда все сопутсвтующие задачи и дев-тестинг и интеграцию и риски насчет внесения новых дефектов. И пользу от введения тестов ты лично сам для себя оцениваешь. Как страховку. Нужна она - пиши. Не нужна - не пиши никогда. Вот на юай почти никогда тестов не пишут. Слишком хлопотно и пользы мало. Я не буду говорить банальности о том что пишет Роб Мартин. По сути конвенции по писанию кода - это исключительно "договорняк" вашей команды. Никакой Мартин не знает как вам лучше писать. Но то что он написал - это почти готовый шаблон таких конвенций. Хочешь - бери пользуй. Хочешь внеси изменения под себя. Не хочешь пиши как бог даст. Но у меня иногда возникает желание подойти к соседу по разработке и взяв его за загривок несколько раз ударить об клавиатуру. И каждый удар сопровождать фразой - "ни-ког-да-так-не-де-лай-боль-ше-чор-тов-уб-лю-док!" Это в тех случаях когда "сосед" писал "как бог даст". Для джавистов эта проблема еще не так ярко выражена. Вот для С++ ников там еще суровее нужны требования. И это кст. почти никак не связанно со скилованностью команды. Бывает и очень скилованные перцы не могут просто договориться о том как и чего писать. Жарко спорят вплоть до мордобоя. И здесь нужно волевое управленческое решение. Так что сложная вещь это. Управлять людьми. Люди - они разные. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2021, 21:54 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Alexander A. Sak Стас выучил новое слово: JMeter! asv79, Паттерны нужны для образования. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 09:15 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Паттерны нужны для образования. патерны нужны чтобы о них на собесе тебя спрашивал сеньер,который после собеса пойдет писать портянку на 10 к строк кода в одном классе,котоый делает все от А до Я и содержит в себе цепочку ифов длиной в пол класса) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 12:48 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
mayton, рано мне еще перегорать. На счет код стайла согласен -но вообще это должно решаться специальным скриптом- который можно в идею подгрузить. А по поводу чистого кода- я вот не согласен с ним,что он против ифов - ну ведь и все ж читают эту книгу и потом идут вместо ифов городить стримы с фильтрами - что прям под дых бьет производительности,ибо стрим дорогое удовольствие- а когда их в одном методе несколько то вообще печаль может случиться на бьльшом прогоне данных- с чем я собственно сейчас и столкнулся - и от этого дико подгорает. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 12:54 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Тут - какая-то фейерия из тезисов. Кто вообще запрещает тебе делать if-s. Покажи фрагмент кода, который вызвал сомнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 14:25 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
mayton Тут - какая-то фейерия из тезисов. Кто вообще запрещает тебе делать if-s. Покажи фрагмент кода, который вызвал сомнения. Мы говорим вообщем ,а не о каком то конкретном куске кода- про книгу чистый код ,патерны и прочее. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 16:01 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
asv79 потом идут вместо ифов городить стримы с фильтрами - что прям под дых бьет производительности,ибо стрим дорогое удовольствие- а когда их в одном методе несколько то вообще печаль может случиться на бьльшом прогоне данных- с чем я собственно сейчас и столкнулся - и от этого дико подгорает. В Clean код ничего не писали про стримы. И в хорошем ентерпрайзе обычно производительность заворачивается на уровне ожиданий IO/Networking а вовсе не на фильтрах коллекций. Просто если фильтры коллекций играют такую значимую роль - то может стоит внимательно посмотреть что у вас за коллекции. Почему они такие большие? Почему эта фильтрация не делается в БД? Java вообще не создавалась как механизм агрессивной обработки больших коллекций. Я просто хочу посмотреть на то бизнесовое описание, из которого вдруг (!) внезапно вытекает что Java должна что-то очень-очень быстро отфильтровать. Не верю в это. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 16:38 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
asv79 mayton, рано мне еще перегорать. На счет код стайла согласен -но вообще это должно решаться специальным скриптом- который можно в идею подгрузить. А по поводу чистого кода- я вот не согласен с ним,что он против ифов - ну ведь и все ж читают эту книгу и потом идут вместо ифов городить стримы с фильтрами - что прям под дых бьет производительности,ибо стрим дорогое удовольствие- а когда их в одном методе несколько то вообще печаль может случиться на бьльшом прогоне данных- с чем я собственно сейчас и столкнулся - и от этого дико подгорает. ну чтоб говорить что стримы дороже надо иметь какой нибудь бенчмарк под руками. или там байткод разобрать. а то может выяснится (в чем я на 95%) уверен что все стримы уже на уровень байткода разложены на обычный фор. примерно так же как это происходит с хвостовой рекурсией. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 16:51 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
mayton Тут - какая-то фейерия из тезисов. Кто вообще запрещает тебе делать if-s. Покажи фрагмент кода, который вызвал сомнения. я вот к сожалению клинкод до конца не дочитал. но интересное чтиво. касательно ифов подозреваю, речь идет о том что если их много на метод это плохо. если они еще и вложенные это плохо в квадрате. а вложения вложений - застрелите автора. ну типа 1 иф в методе - уже тесткейсов надо вдвое больше. два ифа - вчетверо и т.п. чисто с этой точки зрения. плюс иф всегда должен что то возвращать. типа тернарок. когда иф - ой тут делаем а тут не делаем ничего - это тоже не очень. зы. это личные ощущения. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 16:54 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
mayton asv79 потом идут вместо ифов городить стримы с фильтрами - что прям под дых бьет производительности,ибо стрим дорогое удовольствие- а когда их в одном методе несколько то вообще печаль может случиться на бьльшом прогоне данных- с чем я собственно сейчас и столкнулся - и от этого дико подгорает. В Clean код ничего не писали про стримы. И в хорошем ентерпрайзе обычно производительность заворачивается на уровне ожиданий IO/Networking а вовсе не на фильтрах коллекций. Просто если фильтры коллекций играют такую значимую роль - то может стоит внимательно посмотреть что у вас за коллекции. Почему они такие большие? Почему эта фильтрация не делается в БД? Java вообще не создавалась как механизм агрессивной обработки больших коллекций. Я просто хочу посмотреть на то бизнесовое описание, из которого вдруг (!) внезапно вытекает что Java должна что-то очень-очень быстро отфильтровать. Не верю в это. мы о разном говорим- я тебе пишу что люди почитав clean code начинают боятьс ифов) как там сказано если больше 2х то ваш код smell shit->что происходит дальше - чтобы не было ифов юзают все что угодно,в том числе и стримы( ты сам недавно задавал такой вопрос и я тебе туда стрим воткнул как раз) так вот такие вроде на первый взгляд безобидные выкрутасы - могут серьезно скзаться на производительности. ты же согласен что если ты берешь коллекцию и прогоняешь ее через цикл и попутно там внтури пара тройка ифов это одно и когда ты с этой коллекции делаешь стрим ->filter->collect to то это две совсем неравнозначне операции по производительности ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 16:55 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
asv79 мы о разном говорим- я тебе пишу что люди почитав clean code начинают боятьс ифов) как там сказано если больше 2х то ваш код smell shit->что происходит дальше - чтобы не было ифов юзают все что угодно,в том числе и стримы( ты сам недавно задавал такой вопрос и я тебе туда стрим воткнул как раз) Ты преувеличиваешь. Во первых мы все используем вложенные conditions. Мы без этого не можем. Мы иногда и код не напишем. Особенно если оба condition содержат линию else. Во вторых это ограничение не запретительное а рекомендательное. Его подсвечивает SonarQube в своих отчотах. И самое страшное что может случится - это то что твой проект перейдет из зеленого сегмента в желтый по количеству предупреждений. Но это всё обсуждается с тех-лидом и если твой тех-лид и вся команда будет ОК с таким вложением - то и всем будет пофиг. И заказчик тоже не ставит такой задачи как озеленение всех отчотов. Это вобщем противоречит бизнес-целям. Ведь главная задача - реализация бизнес-фич. А озеленение Сонар-странички - это дело фоновое. Когда критичного ничего нет - озеленяй. Открой из любопытсва свой первый испытательный проект с шахматами и посмотри. У тебя наверное к самому себе будет масса претензий. Но вряд-ли они будут в плоскости количества if-s. Готов спорить что ты найдешь косяки но другие. Кроме того если ты используешь на проекте кодогенераторы типа Antlr, CC, CXF/SOAP, e.t.c. то они на выходе выдают совершенно идиотский (хотя и рабочий код) с вложенностью под тыщу conditions внутри switch-case и никого это не парит. Ведь это код @Generated. Тоесть рисков того что человек напорол боков нету. Ведь человека не было. Был - робот. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 17:08 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
мне кажется, почти любые вложенные ифы можно сделать плоскими. вот с форами сложнее )) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 21:28 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
Я вижу проблему if не в количестве а в смыслах. Если функцию Haskell/Erlang/Scala + guards можно рассматривать как if-s то это меня не напрягает в плане смысла. Ведь паттерн-матчинг с guards это те-же if переписанные на другом языке. Тогда почему количество этих виртуальных if-s меня не напрягает? Что тому причиной? Синтаксис? Тоесть if-s не является проблемой. Проблемой является исключительно наше ВОСПРИЯТИЕ ifs. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 21:37 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
так гарды в патмате как раз и "уплощают" логику. я вообще против вложенностей. я против колбэкхелов я против бесконечных флатмапов я против нестед ифов. это просто усложняет понимание кода. ну и тестирование опять же. 4 ифа в методе - 2 в четвертой степени кейсов. та же тема с форкомпрехеншином. он дает возможность уплощать бесконечные флатмапы флатмапов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 21:53 |
|
Какой паттерн?
|
|||
---|---|---|---|
#18+
...хотя по факту код как работал так и дальше работает. но читать приятнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2021, 21:54 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120500]: |
0ms |
get settings: |
19ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
27ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
1053ms |
get tp. blocked users: |
0ms |
others: | 278ms |
total: | 1388ms |
0 / 0 |