@jvmchat

Страница 2611 из 2890
Cargeh
29.06.2018
13:00:25
удалил код Егора и написал как надо

Georgy
29.06.2018
13:05:43
да статики еще ладно

while с break'ами куда страшнее выглядит

Sergey
29.06.2018
13:08:38
Че - все никак не отойдете? Раунд третий?)

Google
Александр
29.06.2018
13:10:41
?

Sergey
29.06.2018
13:15:19
Давайте мой код тогда пообсираем. Так я применяю EO вместе с SOLID в небольшой тулзинке: https://github.com/skapral/puzzlerbot. Мне насрать что местами процедуры и статики. Мне насрать что Егор критикует extends и RuntimeExtension. Но вся HL архитектура моего пока маленького приложения наглядно видна сразу, невооруженным взглядом, как и завещал Мартин в Clean Architecture. Просто достаточно заглянуть в core. Каждый класс я могу зареюзать где угодно без модификации. Каждый интерфейс отражает миссию и цель моего тула. Каждый класс подчиняется LSP и имеет единственную причину поменяться. Вы не найдете там ни одного класса именованного именем паттерна. И я отлично живу без DI и DTO. Я не заморачиваюсь кактусами и тейксами и юзаю что есть в джаве, но не более того что мне реально нужно.

Сыграем с заказчика и разраба? Сделайте мне любой пропозал по энхансменту и я почти сразу скажу как я его буду делать и сколько примерно это займет и почему.

Wystan
29.06.2018
13:22:56
Дим, привет

добавь меня, пожалуйста, в чат с интервью

Igor
29.06.2018
13:23:20
Sergey
29.06.2018
13:23:34
вы наверно и кончаете от отражения в зеркале?
Если по существу возразить нечего, то нечего и обсирать то что не понимаете.

Wystan
29.06.2018
13:23:39
Ну я же свой парень. на спринге пишу, все дела

Митко Соловец?
29.06.2018
13:24:15
просто ваша подача - агрессивная

не я один это говорил вам

Marat
29.06.2018
13:24:45
посмотрел юз-кейсы в тестах, lisp-style )))) https://github.com/skapral/puzzlerbot/blob/master/puzzler-core/src/test/java/com/github/skapral/puzzler/core/text/threepars/AssertTextInstanceProducesCertainParagraphsTest.java

Google
Sergey
29.06.2018
13:25:16
я не обсирал ваш код
Я об этом и говорю. Вы даже не удосужились объективно обосрать мой код, сразу какие то грязные предположения в отношении меня.

Marat
29.06.2018
13:25:49
если конструкторы заменить на методы-фабрики и из заимпортить через import static то вообще можно от new избавиться

тогда каждый класс будет описывать действие

Sergey
29.06.2018
13:26:55
просто опять свой стиль навязывать будете?
Я никому ничего не навязываю, я аргументирую свою позицию

Митко Соловец?
29.06.2018
13:26:57
>Вы не найдете там ни одного класса именованного именем паттерна. увольнять сразу

?

Sergey
29.06.2018
13:27:29
>Вы не найдете там ни одного класса именованного именем паттерна. увольнять сразу
Да? AbstractComponentBeanFactoryProvider типа лучше? Сразу понятно его бизнес-назначение, ага

Marat
29.06.2018
13:28:01
хм, тогда EO - это попытка писать на java, как на lisp или haskell (списки операций, отложенные вычисления)

Митко Соловец?
29.06.2018
13:28:02
Sergey
29.06.2018
13:28:48
хм, тогда EO - это попытка писать на java, как на lisp или haskell (списки операций, отложенные вычисления)
Справеливо но не совсем. LISP это LISP, Java это Java. Java все таки попопулярнее будет, хоть и незаслуженно, возможно.

Митко Соловец?
29.06.2018
13:29:26
public class Cp_PORT

Sergey
29.06.2018
13:29:30
великий класс великого фреймворка
Я не стану конечно утверждать что у меня длинных имен нет. Но мои длинные имена хотя бы с целью приложения связать можно.

Митко Соловец?
29.06.2018
13:29:36
что за нейминг

ЗАТО НЕ ДЛИННЫЙ

Sergey
29.06.2018
13:30:18
что за нейминг
Субъективная привычка. Критикуемо. Cp - ConfigProperty.

ЗАТО НЕ ДЛИННЫЙ
Про длинные имена - выше. Проблема не в том что они длинные

Митко Соловец?
29.06.2018
13:31:04
короче, я посмотрел код - написан аккуратно в целом и все понятно что и как

Sergey
29.06.2018
13:31:40
зачем нижнее подчеркивание?
Просто так. Почему нет. Хотелось вот мне чтобы имя ENV переменной выглядело как имя переменной и было отделено подчеркиванием

Google
Митко Соловец?
29.06.2018
13:32:10
причем то, как внедряются компоненты - очень похоже на спринг

вот прикол

только Сергей делает это руками

его право

Nikolas
29.06.2018
13:32:28
а тут есть те, кто прочитал книгу (книги) "Elegant objects" и после этого у него сложилось мнение, что он "втирает какую-то дичь"? (но только условие с тем, что надо прочитать книгу пред этим - обязательное)))
простите, походу это я виноват. Пришла пора вскрыть карты: на самом деле я думал как и бОльшая часть из нас по поводу ЕО, мол "@yegor256 , ты втерашешь мне какую-то дичь". Такое мнение сложилось после просмотра пары спитчей с конференций и прочтения пары статей Егора. Потом мне стало интересно, а что он там такого в книгах своих написал, и я даже прочитал... Стало уже более понятнее, но все же меня не покидала мысль, что на бумаге это звучит хорошо, a на практике - нереально так писать. Потом я переписал один из своих проектов на ЕО стиль. Теперь этот проект живет в два бранча "процедурный" и "ЕО". И вот смотрю я на это все, читаю код и думаю: а ведь Егор в чем-то прав. Нет, я не адепт, а скорее прагматик который решил проверить теорию на практике. И меня забавляет, как люди, которые не читая начинают осуждать. Наверное поэтому я и задал такой вопрос, чтобы получить мнения именно с прочитавших. Спасибо :-)

Берял
29.06.2018
13:33:11
Давайте мой код тогда пообсираем. Так я применяю EO вместе с SOLID в небольшой тулзинке: https://github.com/skapral/puzzlerbot. Мне насрать что местами процедуры и статики. Мне насрать что Егор критикует extends и RuntimeExtension. Но вся HL архитектура моего пока маленького приложения наглядно видна сразу, невооруженным взглядом, как и завещал Мартин в Clean Architecture. Просто достаточно заглянуть в core. Каждый класс я могу зареюзать где угодно без модификации. Каждый интерфейс отражает миссию и цель моего тула. Каждый класс подчиняется LSP и имеет единственную причину поменяться. Вы не найдете там ни одного класса именованного именем паттерна. И я отлично живу без DI и DTO. Я не заморачиваюсь кактусами и тейксами и юзаю что есть в джаве, но не более того что мне реально нужно.
я, конечно, не эксперт, но там пара десятков джава классов по 50+ строк кода, в которых только одна строка что-то делает, а остальные - синтаксический мусор наследования, оверрайдинга методов и тд. зачем?

Nikolas
29.06.2018
13:33:14
до сих пор собираю мнения с людей прочитавших, и если есть кому что-то добавить из тех кто прочитал - закиньте мне фитбэк в личку плиз. Не хочу здесь разжигать.

Митко Соловец?
29.06.2018
13:34:02
обычный бойлер

я все нашел

понятно как работает

Sergey
29.06.2018
13:34:34
я, конечно, не эксперт, но там пара десятков джава классов по 50+ строк кода, в которых только одна строка что-то делает, а остальные - синтаксический мусор наследования, оверрайдинга методов и тд. зачем?
Ну что есть то есть. Не я же джаву проектировал - меня то что винить что там синтаксический мусор. Идея не в этом. Идея в том что классы - это не какие то сервисы и DTOшки, которые бизнесу непонятны, а компоненты решающие определенные *бизнес* задачи.

Marat
29.06.2018
13:34:45
Никогда не пользовался EO, но теперь буду. SOLID от народа.

Alexander
29.06.2018
13:34:59
я все нашел
где в каком классе код

Митко Соловец?
29.06.2018
13:35:12
где в каком классе код
https://github.com/skapral/puzzlerbot/blob/master/puzzler-app/src/main/java/com/github/skapral/puzzler/app/Bootstrap.java

Alexander
29.06.2018
13:35:27
норм, это все?

Sergey
29.06.2018
13:35:35
сервисы решают бизнес задачи
Чьи зачади решает тот Abstractблаблабла бин? Программерские разве что - бизнес такими словами не говорит.

Митко Соловец?
29.06.2018
13:35:43
https://github.com/skapral/puzzlerbot/blob/master/puzzler-core/src/main/java/com/github/skapral/puzzler/core/operation/AssertOperationSuccessful.java

Google
Alexander
29.06.2018
13:36:03
это ваще тесты походу

Берял
29.06.2018
13:36:09
https://github.com/skapral/puzzlerbot/blob/master/puzzler-core/src/main/java/com/github/skapral/puzzler/core/operation/AssertOperationSuccessful.java
ну вот файл на 55 строк ради одной строки Assertions.assertThatCode(() -> { operation.execute(); }).doesNotThrowAnyException();

Митко Соловец?
29.06.2018
13:36:12
а вот MailService - решает задачи

Берял
29.06.2018
13:36:18
и при этом все это обмазано throws Exception

Митко Соловец?
29.06.2018
13:36:26
ну вот файл на 55 строк ради одной строки Assertions.assertThatCode(() -> { operation.execute(); }).doesNotThrowAnyException();
самое главное - классы ппц как на спринг компоненты похоже

Admin
ERROR: S client not available

Митко Соловец?
29.06.2018
13:36:35
с той лишь разницей, что Сергей все руками собирает

а может Сергей просто поклонник рич модели

Берял
29.06.2018
13:37:00
человек соблюдает SOLID, но не соблюдает KIS

мне не нужен интерфейс и абстрактный класс для того чтобы написать одну строчку

Marat
29.06.2018
13:37:23
https://github.com/skapral/puzzlerbot/blob/master/puzzler-core/src/main/java/com/github/skapral/puzzler/core/operation/AssertOperationSuccessful.java
хм, я вижу вызов метода, надо переписать на new Start( new SrvGrizzlyWithJersey( new Cp_PORT(), new PuzzlerAPI() ) );

Sergey
29.06.2018
13:37:36
ну вот файл на 55 строк ради одной строки Assertions.assertThatCode(() -> { operation.execute(); }).doesNotThrowAnyException();
Не ради одной строки, а ради всех будущих имплементаций Operation которые я напишу. Этот ассершн подойдет для тестирования всех них.

Alexander
29.06.2018
13:37:56
есть бойлерплейт, который не делает ничего

элегентно, че

Митко Соловец?
29.06.2018
13:38:16
https://github.com/skapral/puzzlerbot/blob/master/puzzler-core/src/main/java/com/github/skapral/puzzler/core/operation/OpDoNothing.java#L38

Sergey
29.06.2018
13:38:17
ну то есть ты дал нам посмотреть проект, в котором кода так и нет
Что значит - нет. Работающий проект - хоть щас можете развернуть

Google
Жабра
29.06.2018
13:38:39
Берял
29.06.2018
13:39:02
Sergey
29.06.2018
13:39:37
.../src/main/java
И что? Это реюзабл стаб для тестов, который могут использовать компоненты вне этого джарника.

Tolegen
29.06.2018
13:40:10
Null Object Pattern ещё его называют

Митко Соловец?
29.06.2018
13:40:13
https://github.com/skapral/puzzlerbot/blob/master/puzzler-core/src/main/java/com/github/skapral/puzzler/core/itracker/ItToList.java#L40

Берял
29.06.2018
13:40:14
И что? Это реюзабл стаб для тестов, который могут использовать компоненты вне этого джарника.
ну обычно все что относится к тестам лежит в директории с тестами

Митко Соловец?
29.06.2018
13:40:16
вопрос

если я передам Arrays.asList в конструктор

Marat
29.06.2018
13:40:34
И что? Это реюзабл стаб для тестов, который могут использовать компоненты вне этого джарника.
эээ, такое обычно увозят в отдельные подмодули, чтобы их по testCompile включать можно было

Митко Соловец?
29.06.2018
13:40:38
а потом вызову persistPuzzle

что будет?

Sergey
29.06.2018
13:40:45
Alexander
29.06.2018
13:41:01
Митко Соловец?
29.06.2018
13:41:11
разберитесь куда тесты складывают

и ответьте на вопрос выше

Vladimir
29.06.2018
13:41:40
что будет?
LSP - это не про java.util.List. Такова жизнь.

Sergey
29.06.2018
13:41:53
разберитесь куда тесты складывают
DoNothingOperation - это не тест. И AssertOperationSuccessful - еще не тест. Что вас вводит в диссонанс?

Страница 2611 из 2890