powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Какой паттерн?
61 сообщений из 61, показаны все 3 страниц
Какой паттерн?
    #40050945
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

В систему будут поступать объекты "Документ", нужно проводить валидацию документов, согласно списку проверок из БД.

Проверки в БД могу быть включены (true) или отключены (false). Т.е. если сегодня включены проверки 1, 2, 3, и 5, то на завтра,

пользователь может изменить количество и номера проверок на 1, 3, 4.

Какой паттерн проектирования здесь можно применить? Что бы не писать конструкцию:

Код: java
1.
2.
3.
4.
5.
6.
7.
if(check1 == true){

} else if(check2 == true){

} else if (check3 == true){

...
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050950
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Почему у многих такая маниакальная не любовь к if, case, for?))
В каком виде проверка лежит в бд?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050952
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Aleks_Aleks,
Почему у многих такая маниакальная не любовь к if, case, for?))

Мы не индусы, что бы нам платили за количество строк кода))

PetroNotC Sharp
Aleks_Aleks,
В каком виде проверка лежит в бд?

Скорее всего, буду из БД получать список "SELECT check FROM checks WHERE status = true;"

конвертить его в List<Check>

а дальше как-то проверять, что если в списке есть проверка 1 то выполнить проверку "№ документа", если есть проверка 2 то проверить "Дату документа" и т.д.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050958
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю использовать паттерн Command,

код уже реализован на паттерне Chain of Responsibility

просто классы, положить в БД, получить список классов, на всех классах вызвать метод execute

годный контент?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050959
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Будет меньше кода если все условия выстроим в цепочку?
strim2 = streamMy.filter(check==true)
2. Я спросил какой вид в бд имеет проверка "Дата документа"?
Что лежит в текстовом поле? Sql.? Dll? Скрипт? Jar?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050961
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks
Я думаю использовать паттерн Command,

код уже реализован на паттерне Chain of Responsibility

просто классы, положить в БД, получить список классов, на всех классах вызвать метод execute

годный контент?
нет. Command это - выполни команду кто сможет.
То есть есть много исполнителей а не проверок.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050962
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Почему нет паттерн ORM?
Если бы он был, то ни одного слова о бд не было бы в топике.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050963
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Aleks_Aleks,
2. Я спросил какой вид в бд имеет проверка "Дата документа"?
Что лежит в текстовом поле? Sql.? Dll? Скрипт? Jar?


Пока точно не известно, данная таблица еще не реализована, скорее всего там будет храниться код проверки "CHECK_01_02_02"

но можно положить и имя класса или еще что нить...
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050964
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Ну и на всякий теория.
Валидация проходе в слое бизнес логике БЛ.
Она пишется заранее и юзверь не ставит галочки что проверять.
В общем случае... Абстрактно говоря.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050965
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleks_Aleks
PetroNotC Sharp
Aleks_Aleks,
2. Я спросил какой вид в бд имеет проверка "Дата документа"?
Что лежит в текстовом поле? Sql.? Dll? Скрипт? Jar?


Пока точно не известно, данная таблица еще не реализована, скорее всего там будет храниться код проверки "CHECK_01_02_02"

но можно положить и имя класса или еще что нить...


В БД будет храниться только код и название проверки и еще статус вкл/выкл,

сама реализация проверки будет в Java Class
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050966
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
А условия OR AND, скобки, меньше больше где?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050967
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. общий смысл такой,

есть
Код: java
1.
2.
3.
4.
5.
6.
List<Check> listChecks = new ArrayList<>();

listChecks.add(new CheckNumber);
listChecks.add(new CheckDate);
listChecks.add(new ChecUser);
listChecks.add(new CheckOffice);



есть проверки

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class CheckNumber{

 void exsample(String id){
 if(id != "123"){
  ...
 }
}


class CheckDate{

 void exsample(String date){
 if(date >= currentDate){
  ...
 }
}
}
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050968
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
If doc.подписан == гендир ИЛИ врио
выделитКредит()

Как тут галочками?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050970
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks
т.е. общий смысл такой,

есть
Код: java
1.
2.
3.
4.
5.
6.
List<Check> listChecks = new ArrayList<>();

listChecks.add(new CheckNumber);
listChecks.add(new CheckDate);
listChecks.add(new ChecUser);
listChecks.add(new CheckOffice);




есть проверки

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class CheckNumber{

 void exsample(String id){
 if(id != "123"){
  ...
 }
}


class CheckDate{

 void exsample(String date){
 if(date >= currentDate){
  ...
 }
}
}

а где тут юзверь с галочками? Он кто?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050972
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Извини, пока что ООП головного мозга.
Тебе на галеры надо.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050973
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если этих чекеров ощутимо больше 5, я бы добавил в таблице уникальное поле "имя чекера", а в коде по полю создавал соответствующую имени реализацию. Т.е. грузим только те, что активны, создаем реализации и возвращаем прикладному коду. Самый интересный вопрос - как именно и где создавать и описывать реализации, тут возможны варианты. Самое примитивное - мапа имя-класс, более продвинутое - как-то через DI, если используется.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050975
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
Имя Класса. Потом фабрикой создавать полиморфные объект. И он инспектирует или валидирует.
Тут много паттернов.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050978
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше сразу DSL
))))
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050979
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050980
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,

Предметно-ориентированный язык (англ. domain-specific language, DSL — «язык, специфический для предметной области») — компьютерный язык, специализированный для конкретной области применения (в противоположность языку общего назначения, применимому к широкому спектру областей и не учитывающему особенности конкретных сфер знаний). Построение такого языка и/или его структура данных отражают специфи
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050981
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Имя Класса

имя класса менее гибко, а так это "имя бина", за которым реализация может меняться
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050983
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
If name == "CheckDate"
obj = new CheckDate()
else
...
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050984
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050987
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
Бин это класс в общем случае.
Я о паттерне полиморфизм в ООП.
Его препод раньше спросит.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050989
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Без if это фабрика классов рожает класс по строке
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050990
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

Спасибо!
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054784
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы здесь использовал паттерн Iterator.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054788
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0,
У него условия лежат в бд, поэтому нужен порождающий паттерн родить объект. А потом можно и итератор имхо
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054789
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В простейшем случае (проверок немного) сделал бы через enum.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public enum Check {

    DATE() {
        @Override
        boolean isValid(Object source) {
            return false;
        }
    },
    NUMBER() {
        @Override
        boolean isValid(Object source) {
            return false;
        }
    };

    abstract boolean isValid(Object source);
}

Check check = Check.valueOf("<name from DB>"); // А это фабрика
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054790
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если случай навороченный, то через jpa single table inheritance
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054803
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0,
А без jpa/spring/boot могешь?
Вопрос вроде java core
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054833
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0,
>Check check = Check.valueOf("<name from DB>"); // А это фабрика
== Хмммм,
А можно звать фабрикой фабрику Не классов?
Имхо нельзя
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054891
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

А можно звать фабрикой фабрику Не классов?

Ну надо в Коране для ООП посмотреть, это очень важный вопрос. Иначе ООП получится неправильное, а это прямая дорога в ад
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054893
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Я вообще не люблю когда из перечислимое делают класс с поведением (.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054909
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
забыл ник,
Я вообще не люблю когда из перечислимое делают класс с поведением (.
Почему же класс? Ты же только что говорил что это не класс. Делают не класс и не фабрику и не в java...

Тут же главное идея в коде, а не слова. Все лучше чем твои разглагольствования.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054921
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0,
Я разглагольствую?
С сказал мне не понравилось. Всё).
...
Рейтинг: 0 / 0
Какой паттерн?
    #40054941
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vas0
Я бы здесь использовал паттерн Iterator.

Iterator или Iterable ?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055526
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Aleks_Aleks,
Почему у многих такая маниакальная не любовь к if, case, for?))
В каком виде проверка лежит в бд?

потому что какой то клоун написал говно книгу - чистый код и там решил что если больше там 2 ифа - то все звиздец - твой код
->>>smell shit

я скажу так - код должен работать прежде всего,а как он пахнет нужно на jmeter проверять , а не по клоунским заявлениям какого то дауна)
а теперь все бегут менять ифы на стримы - тем самым убивая производительсность- и я как раз с этим говном щас столкнулся - 5 гиг даты перегоняю по 3 часа это писдец полный - зато с**а модные стримы везде,а по факту везде мемори лик ,так что я вот щас пишу тут сабж по 1 букве
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055531
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и если по теме ответить - никто нигде и никогда в реал лайфе не соблюдает эти солиды и не пишет код по патернам
(вся эта вроде хорошая идея - начинается и кончается на собесах)

ты будешь видеть постоянно классы по 100500 тысяч строк ,с дубляжом,с непонятными чудо переменными,один классс будет дублировать функционал другого и тд - это все результат коллективной разроботки и текучесть кадров

вот тебе пример я пришел на проект - дали таску,пишу код- в качестве аргумента прилетает стринга в один из методов
я должен ее обрабоать ,а том числе убрать теги
код написал,метод по убиранию тегов тоже
в какой то момент ,месяца через 4 я увидел что такой метод уже есть в проекте)
и это везде и всюду- только если тим лид сам не кодит и на проекте уже 100500 лет - тогда да( но это почти фантастика)
какая то куча юзлес интерфейсов ,которые друг друга дублируют итд и тп.
Все эти патерны и шаблоны - все это конечно круто - но по факту ты скорей всего не встретишь в своей жизни ни одного проекта- которые соотвествует .

поэтому я вот думаю и по факту так и есть - два критерия твоего кода

1.работает
2.прошел jmeter


все эти высокие слорва о расширяемоси и тд - такая тупо дичь ,за 3года моей работы -никто чо то ниразу не расширился никуда)
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055532
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это про разные вещи. JMeter - это производительность сетевых интеракций.

Clean Code - это просто борьба со сложностью самого ВОСПРИЯТИЯ кода разработчиком.

Вообще все задачи разработки можно описать двумя сверх-задачами.

1) Понимание проблем предметной области (домена).
2) Борьба со сложностью уже написанного кода.

Вот Clean Code это про второе.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055533
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну это про разные вещи. JMeter - это производительность сетевых интеракций.


ну мы все в сети и если твой код быстр и работает - то лично мне как бизнесу было бы пох как он пахнет
я про что говорю то - что конь ,писавший книгу - чистый код - сетовал на множественные ифы- и таки он подействовал на сознание программистов - теперь 2 + ифа = это считаеся зашквар и ребята начинают плодить стримы везде где нужно и не нужно - по факту нагружая систему так ,что простейшие операции вещаеют систему
поэтому вот этих всех clean code надо бить палками,или пометить их говно книгу как @Deprecated
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055534
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mayton
Ну это про разные вещи. JMeter - это производительность сетевых интеракций.


ну мы все в сети и если твой код быстр и работает - то лично мне как бизнесу было бы пох как он пахнет
я про что говорю то - что конь ,писавший книгу - чистый код - сетовал на множественные ифы- и таки он подействовал на сознание программистов - теперь 2 + ифа = это считаеся зашквар и ребята начинают плодить стримы везде где нужно и не нужно - по факту нагружая систему так ,что простейшие операции вещаеют систему
поэтому вот этих всех clean code надо бить палками,или пометить их говно книгу как @Deprecated

Тебе случалось когда-либо видеть "плохой код" ?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055536
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Тебе случалось когда-либо видеть "плохой код" ?

Твой вопрос можно задать иначе- тебе встречалось видеть хороший код?
скажу честно - нет,я не видел код,который соотвествует солид и каким то патернам- все это существует лишь на собесах- поэтому на текущих собесах я бы про это вообще не спрашивал - ибо все это супер гуд - но по факту этого нигде нет
я вот на текущем проекте как правильный разбраб покрывал свой код тестами - а потом понял что это нах никому не надо)
ну и блет реально потратил месяц почти на эту разоработку - все свои выхи + переработки - и что ? кто то слово сказал? да всем пох


Нужно уяснить главное правило - делай тока ту таску что тебе дали и забей на все остальное ( ибо всем пох)
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055540
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стас выучил новое слово: JMeter!
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055546
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Стас выучил новое слово: JMeter!

не только выучил ,но и применяю- что 99% тут седящих не умеют)
весь ваш clean code jmeter на одном месте вертел)
пиши код чтоб он работал быстро - а не был красивым( что это вообще блеть за дичь - красивый код-давайте может лгбт код уже создадим)
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055554
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mayton

Тебе случалось когда-либо видеть "плохой код" ?

я вот на текущем проекте как правильный разбраб покрывал свой код тестами - а потом понял что это нах никому не надо)
ну и блет реально потратил месяц почти на эту разоработку - все свои выхи + переработки - и что ? кто то слово сказал? да всем пох

Что с тобой? Выгорел? Насто3.14здела работа?

Вот часто так... начинаешь за здравие а оканчиваешь просто ... вся жизть дерьмо ... все бабы стервы и солнце... и т.д.

По поводу тестов - сделай соотв. выводы. Если они были избыточны, или сложнЫ, или их никто не заказывал.
(Заказчик вообще практически никогда не заказывает тесты) - то значит у вас на проекте была неверная
оценка объема работ. Потому что разраб на глаз оценивает то что надо сделать включая туда все сопутсвтующие
задачи и дев-тестинг и интеграцию и риски насчет внесения новых дефектов. И пользу от введения тестов
ты лично сам для себя оцениваешь. Как страховку. Нужна она - пиши. Не нужна - не пиши никогда. Вот на юай
почти никогда тестов не пишут. Слишком хлопотно и пользы мало.

Я не буду говорить банальности о том что пишет Роб Мартин. По сути конвенции по писанию кода - это исключительно
"договорняк" вашей команды. Никакой Мартин не знает как вам лучше писать. Но то что он написал - это почти
готовый шаблон таких конвенций. Хочешь - бери пользуй. Хочешь внеси изменения под себя.
Не хочешь пиши как бог даст.

Но у меня иногда возникает желание подойти к соседу по разработке и взяв его за загривок несколько раз ударить
об клавиатуру. И каждый удар сопровождать фразой - "ни-ког-да-так-не-де-лай-боль-ше-чор-тов-уб-лю-док!" Это
в тех случаях когда "сосед" писал "как бог даст". Для джавистов эта проблема еще не так ярко выражена. Вот
для С++ ников там еще суровее нужны требования.

И это кст. почти никак не связанно со скилованностью команды. Бывает и очень скилованные перцы не могут
просто договориться о том как и чего писать. Жарко спорят вплоть до мордобоя. И здесь нужно волевое
управленческое решение.

Так что сложная вещь это. Управлять людьми. Люди - они разные.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055585
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Стас выучил новое слово: JMeter!
)) ты крут. Весь его сериал из 4х серий пересказал одной фразой))).
asv79,
Паттерны нужны для образования.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055599
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

asv79,
Паттерны нужны для образования.

патерны нужны чтобы о них на собесе тебя спрашивал сеньер,который после собеса пойдет писать портянку на 10 к строк кода в одном классе,котоый делает все от А до Я и содержит в себе цепочку ифов длиной в пол класса)
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055601
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
рано мне еще перегорать.
На счет код стайла согласен -но вообще это должно решаться специальным скриптом- который можно в идею подгрузить.
А по поводу чистого кода- я вот не согласен с ним,что он против ифов - ну ведь и все ж читают эту книгу и потом идут вместо ифов городить стримы с фильтрами - что прям под дых бьет производительности,ибо стрим дорогое удовольствие- а когда их в одном методе несколько то вообще печаль может случиться на бьльшом прогоне данных- с чем я собственно сейчас и столкнулся - и от этого дико подгорает.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055614
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут - какая-то фейерия из тезисов.

Кто вообще запрещает тебе делать if-s.

Покажи фрагмент кода, который вызвал сомнения.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055622
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Тут - какая-то фейерия из тезисов.

Кто вообще запрещает тебе делать if-s.

Покажи фрагмент кода, который вызвал сомнения.

Мы говорим вообщем ,а не о каком то конкретном куске кода- про книгу чистый код ,патерны и прочее.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055628
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
потом идут вместо ифов городить стримы с фильтрами - что прям под дых бьет производительности,ибо стрим дорогое удовольствие- а когда их в одном методе несколько то вообще печаль может случиться на бьльшом прогоне данных- с чем я собственно сейчас и столкнулся - и от этого дико подгорает.

В Clean код ничего не писали про стримы.

И в хорошем ентерпрайзе обычно производительность заворачивается на уровне ожиданий IO/Networking
а вовсе не на фильтрах коллекций. Просто если фильтры коллекций играют такую значимую роль - то может
стоит внимательно посмотреть что у вас за коллекции. Почему они такие большие? Почему эта фильтрация
не делается в БД?

Java вообще не создавалась как механизм агрессивной обработки больших коллекций. Я просто хочу посмотреть
на то бизнесовое описание, из которого вдруг (!) внезапно вытекает что Java должна что-то очень-очень быстро
отфильтровать. Не верю в это.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055631
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mayton,
рано мне еще перегорать.
На счет код стайла согласен -но вообще это должно решаться специальным скриптом- который можно в идею подгрузить.
А по поводу чистого кода- я вот не согласен с ним,что он против ифов - ну ведь и все ж читают эту книгу и потом идут вместо ифов городить стримы с фильтрами - что прям под дых бьет производительности,ибо стрим дорогое удовольствие- а когда их в одном методе несколько то вообще печаль может случиться на бьльшом прогоне данных- с чем я собственно сейчас и столкнулся - и от этого дико подгорает.

ну чтоб говорить что стримы дороже надо иметь какой нибудь бенчмарк под руками. или там байткод разобрать. а то может выяснится (в чем я на 95%) уверен что все стримы уже на уровень байткода разложены на обычный фор. примерно так же как это происходит с хвостовой рекурсией.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055633
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Тут - какая-то фейерия из тезисов.

Кто вообще запрещает тебе делать if-s.

Покажи фрагмент кода, который вызвал сомнения.

я вот к сожалению клинкод до конца не дочитал. но интересное чтиво.
касательно ифов подозреваю, речь идет о том что если их много на метод это плохо. если они еще и вложенные это плохо в квадрате.
а вложения вложений - застрелите автора.
ну типа 1 иф в методе - уже тесткейсов надо вдвое больше. два ифа - вчетверо и т.п. чисто с этой точки зрения.
плюс иф всегда должен что то возвращать. типа тернарок. когда иф - ой тут делаем а тут не делаем ничего - это тоже не очень.

зы. это личные ощущения.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055634
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
asv79
потом идут вместо ифов городить стримы с фильтрами - что прям под дых бьет производительности,ибо стрим дорогое удовольствие- а когда их в одном методе несколько то вообще печаль может случиться на бьльшом прогоне данных- с чем я собственно сейчас и столкнулся - и от этого дико подгорает.

В Clean код ничего не писали про стримы.

И в хорошем ентерпрайзе обычно производительность заворачивается на уровне ожиданий IO/Networking
а вовсе не на фильтрах коллекций. Просто если фильтры коллекций играют такую значимую роль - то может
стоит внимательно посмотреть что у вас за коллекции. Почему они такие большие? Почему эта фильтрация
не делается в БД?

Java вообще не создавалась как механизм агрессивной обработки больших коллекций. Я просто хочу посмотреть
на то бизнесовое описание, из которого вдруг (!) внезапно вытекает что Java должна что-то очень-очень быстро
отфильтровать. Не верю в это.

мы о разном говорим- я тебе пишу что люди почитав clean code начинают боятьс ифов) как там сказано если больше 2х то ваш код smell shit->что происходит дальше - чтобы не было ифов юзают все что угодно,в том числе и стримы( ты сам недавно задавал такой вопрос и я тебе туда стрим воткнул как раз)
так вот такие вроде на первый взгляд безобидные выкрутасы - могут серьезно скзаться на производительности.
ты же согласен что если ты берешь коллекцию и прогоняешь ее через цикл и попутно там внтури пара тройка ифов это одно и когда ты с этой коллекции делаешь стрим ->filter->collect to то это две совсем неравнозначне операции по производительности
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055636
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79

мы о разном говорим- я тебе пишу что люди почитав clean code начинают боятьс ифов) как там сказано если больше 2х то ваш код smell shit->что происходит дальше - чтобы не было ифов юзают все что угодно,в том числе и стримы( ты сам недавно задавал такой вопрос и я тебе туда стрим воткнул как раз)

Ты преувеличиваешь. Во первых мы все используем вложенные conditions. Мы без этого не можем. Мы иногда
и код не напишем. Особенно если оба condition содержат линию else.

Во вторых это ограничение не запретительное а рекомендательное. Его подсвечивает SonarQube в своих отчотах.
И самое страшное что может случится - это то что твой проект перейдет из зеленого сегмента в желтый по количеству
предупреждений. Но это всё обсуждается с тех-лидом и если твой тех-лид и вся команда будет ОК с таким вложением - то
и всем будет пофиг. И заказчик тоже не ставит такой задачи как озеленение всех отчотов. Это вобщем противоречит
бизнес-целям. Ведь главная задача - реализация бизнес-фич. А озеленение Сонар-странички - это дело фоновое.
Когда критичного ничего нет - озеленяй.

Открой из любопытсва свой первый испытательный проект с шахматами и посмотри. У тебя наверное к самому себе
будет масса претензий. Но вряд-ли они будут в плоскости количества if-s. Готов спорить что ты найдешь косяки
но другие.

Кроме того если ты используешь на проекте кодогенераторы типа Antlr, CC, CXF/SOAP, e.t.c. то они на выходе выдают
совершенно идиотский (хотя и рабочий код) с вложенностью под тыщу conditions внутри switch-case и никого это не парит.
Ведь это код @Generated. Тоесть рисков того что человек напорол боков нету. Ведь человека не было. Был - робот.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055672
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне кажется, почти любые вложенные ифы можно сделать плоскими. вот с форами сложнее ))
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055675
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вижу проблему if не в количестве а в смыслах. Если функцию Haskell/Erlang/Scala + guards можно рассматривать
как if-s то это меня не напрягает в плане смысла. Ведь паттерн-матчинг с guards это те-же if переписанные на другом
языке. Тогда почему количество этих виртуальных if-s меня не напрягает? Что тому причиной? Синтаксис?

Тоесть if-s не является проблемой. Проблемой является исключительно наше ВОСПРИЯТИЕ ifs.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055677
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так гарды в патмате как раз и "уплощают" логику.

я вообще против вложенностей. я против колбэкхелов я против бесконечных флатмапов я против нестед ифов.
это просто усложняет понимание кода. ну и тестирование опять же. 4 ифа в методе - 2 в четвертой степени кейсов.

та же тема с форкомпрехеншином. он дает возможность уплощать бесконечные флатмапы флатмапов.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055678
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...хотя по факту код как работал так и дальше работает. но читать приятнее.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40055721
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
If, for боится тот кто new в жизни не писал.
Чего удивлятся.
Замените бизнес логику
Код: java
1.
If в кармане пусто { прошелмиморесторана()}


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


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