|
Какой паттерн?
|
|||
---|---|---|---|
#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?fid=59&gotonew=1&tid=2120500]: |
0ms |
get settings: |
18ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
37ms |
get topic data: |
4ms |
get first new msg: |
37ms |
get forum data: |
1ms |
get page messages: |
256ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 640ms |
0 / 0 |