
Sergey
02.12.2017
18:00:13
есть мнение что ты не особо понимаешь суть разделения ответственности
и в целом плохо читаешь доки
почему - хз, тебе виднее
ты ж не пытаешься разобраться

Google

Arky
02.12.2017
18:01:35
Про разделение ответственности в доках не встречал, может я невнимательно читаю)

Vit
02.12.2017
18:01:55
пока нигде)
Ну я не про конкретную про такси) Думал, может где публикуете?

Arky
02.12.2017
18:02:31

Sergey
02.12.2017
18:05:22
в целом больше гугли.
и пытайся разбираться самостоятельно. Можашь задавать вопросы просто что бы проверить утверждения

Егор
02.12.2017
18:55:48
Мне кажется, что перед фреймворками неплохо бы порешать абстрактные задачки на ООП. Например консольные шахматы, где есть различные зоны ответственности:
- логика шахмат, не зависящая от отображения
- обработка хода (игроки по очереди вводят команды вроде "e2-e4" в консоли)
- консольное отображение
Потом добавить игру по сети и проанализировать сколько кода нужно исправить
Или добавить возможность играть в правила Фишера и опять посмотреть, как много нужно задеть кода для этой фичи.
Чем меньше - тем лучше разделены ответственности, то есть получаем наглядный профит от хорошей архитектуры, а не слепо верим всяким Зандстрам и GoFам.

Sergey
02.12.2017
19:20:21
то что надо придумывать задачу что бы требования потом можно было менять - это да
это правильно
как по мне можно калькулятор консольный написать)
сначала что бы он умел простые выражения. потом добавляем туда sin/cos
потом историю операций

Google

Sergey
02.12.2017
19:22:06
но это для js удобно. ибо тогда можно будет помимо текстового поля кнопки фигарить
да и не только UI нам надо отделять

Егор
02.12.2017
19:24:29
Калькулятор с парсером арифметических выражений? Я извращался как-то, не скажу что лучше научился ООП понимать
Много нового приходится изучать при создании парсера, не до ООП
Раз попроще, то ещё встречал такую задачу
https://gist.github.com/wbars/2c3590206ee4a590eca5
Ох уж эти превью :(

Sergey
02.12.2017
19:27:14
ооп ты на шахматах не особо поучишь)
ну то есть, какие у тебя объекты будут? интерфейс фигура, и на каждый тип фигуры реализация. + доска
ну да, полиморфизм можно потренировать

Егор
02.12.2017
19:29:22
ну тогда может делать акцент не на игре, а на том, что у нас разные части кода содержут логику игры, обработку пользовательского ввода, отображение

Sergey
02.12.2017
19:30:21
и ты ООП тренькать собрался или разделение ответственности?
для ООП мне понравилась задачка - система координации лифтов
типа у тебя есть 4 лифта, и надо максимально утилизировать их загрузку. Пользователи могут на первом этаже указывать куда они хотят
и на других этажах - вверх или вниз

Sergey
02.12.2017
19:35:40
а учитывая что там геймдев, то ООП очень нужно, иначе погрязнешь быстро в лапше

Danil
02.12.2017
19:42:58
В геймдеве вообще сложно без этого

Google

Егор
02.12.2017
19:50:05
шахматы наверное потому, что легко придумывать новые требования (есть разные шахматы с разными правилами, можно тренировать шахматные этюды, можно добавить примитивный ИИ). Но под эту категорию наверное много игр подходят.
> и ты ООП тренькать собрался или разделение ответственности?
Я с ФП не знаком, так что мне разделение ответственности без ООП сложно представить. Просто Arky хочет где-то в доке прочитать про разделение ответственности, а нужно ведь не только читать, но и практиковаться.

Sergey
02.12.2017
19:52:32
это да, но это и ивенты, и эктор модел, и много чего еще

Alan
02.12.2017
20:15:30

Boris
02.12.2017
20:17:59
@fes0r проблема думаю банальная, опыт. Некоторые развиваются и приходят к полному пониманию того что используют, другие не задумываются как оно работает.
Но суть в том что пока мы тут рассуждаем о паттернах, ребята на yii2 и процедурщине пилят проекты
А как известно обсуждение бизнесу не приносит профита

Sergey
02.12.2017
20:23:57
что за приравнивание себя к бизнесу?)

Sergey
02.12.2017
20:24:00
а я потом сиди аудит делай

Boris
02.12.2017
20:24:51

Sergey
02.12.2017
20:25:45
код пишется не только для того чтобы побыстрее фичу в прод выкатить

Boris
02.12.2017
20:26:20

Sergey
02.12.2017
20:26:21
есть еще такие важные критерии как стабильность, производительность, потребление ресурсов
у бизнеса по-умолчанию включены "флажки" чтоб все збс работало

Alan
02.12.2017
20:26:50
разобраться в плохом коде для доработки какого нибудь мвп потом дороже в итоге )

Sergey
02.12.2017
20:26:55
так что ориентироваться на него тоже не стоит

Alan
02.12.2017
20:26:57
и черевато тем что не разберешься ))

Sergey
02.12.2017
20:27:20
вот к примеру возьмем наших соседей из data science

Google

Sergey
02.12.2017
20:27:33
есть там крутые дядьки математики-статистики, которые там себе написали модель на R/Python
но она не годна к проду вообще никак
потому что ее не могут поддерживать никто кроме них, и люди потом портируют их модель на java/scala, чтобы эта моделька была поддерживаемая и приносила какой-нибудь value для бизнеса
вот так и с MVP
нахуярить то можно, но поддерживать и лить в прод это нельзя

Sergey
02.12.2017
20:28:40

Boris
02.12.2017
20:32:54
Третий пункт не совсем понял
По второму пункту, можно же рассматривать такой вариант.
Необходим проект N, ребята по быстрому пилят его CRUDом, внутри полный говнокод, но он как-то работает.

Sergey
02.12.2017
20:36:08
эт MVP или прототип называется

Boris
02.12.2017
20:36:14
Выходят на рынок - есть профит, переписывают нормально.

Admin
ERROR: S client not available

Boris
02.12.2017
20:36:22
Нет - проект в топку

Sergey
02.12.2017
20:36:38
выход на рынок это не всегда 1-2 месяца

Alan
02.12.2017
20:36:49
а есть реальный такой опыт?
переписывания проекта который приносит деньги)

Boris
02.12.2017
20:37:20

Alan
02.12.2017
20:37:53
прост с выходом на рынок и команда растет и задач больше становится, говнокод х2 ускоряется

Sergey
02.12.2017
20:38:02
я на проекте вот уже 3.5 года, мы на рынок выходим постепенно в течении всего этого времени. требования выяснялись и менялись довольно быстро. сейчас вот пытаемся кое-как разгребать то что было написано 3 года назад в спешке
и то я б не сказал бы что у нас появилось куча времени чтобы переписывать
у нас куда меньше щас времени чем было 3 года назад

Google

Sergey
02.12.2017
20:38:44
ибо появляются доп проблемы, фичи нужно тоже делать, еще ops часть появляется
так что "потом перепишем" это из рубрики "в понедельник в зал пойду!"
п.с разгребаем гавнокод вот щас с коллегой в субботний вечер)

Boris
02.12.2017
20:41:25

Sergey
02.12.2017
20:41:38
да
попутно до 3.4 обновились
и готовим к 4.0

Boris
02.12.2017
20:42:57
Рефакторить говнокод symfony думаю проще, чем тот же yii2 например?
Или умудряются тоже?

Sergey
02.12.2017
20:43:26
ну у всех разное понятие гавнокода)

Boris
02.12.2017
20:44:00
Например что в приведенном тобой проекте адски неправильно ребята сделали?

Sergey
02.12.2017
20:44:35
использование сущностей в твиге
но самое ужасное это обьект-обертка над массивом данных, чтобы были человеческие методы, но с регулярной конвертацией этого обьекта обратно в массив и дальше работой как с массивом
и вот когда это все в твиг уходит... это ад
решение на коленке было в свое время, но сейчас нам придется потратить месяца полтора чтобы это исправить

Boris
02.12.2017
20:45:42
В смысле напрямую вызов сущности из шаблона?

Sergey
02.12.2017
20:45:51
ну передали массив юзеров например
и дальше for order in user.orders и поехали
дальше по списку идут проблемы со связанностью, когда некоторые модули юзают кишки из других модулей в обход интерфейсов

Vladislav
02.12.2017
20:48:19
То есть
Users = findBy(status=lol)
Render(some view, users) плохо?

Sergey
02.12.2017
20:48:50
в итоге ты связан по рукам с рефакторингом
и это нужно делать очень осторожно, чтобы не похерить шаблоны

Boris
02.12.2017
20:49:08