
Sergey
11.04.2018
13:52:01

Like
11.04.2018
13:52:05
Аналогично и SRP

Sergey
11.04.2018
13:52:14
SRP самый сложный из этих 5-ти
OCP - это самый главный, если можно так сказать из этих 5-ти

Google

Ihor
11.04.2018
13:52:41
ну вы же php тут многие? Symfony Validator ставлю всегда в пример
расширяем и закрыт для изменения

Sergey
11.04.2018
13:53:21
да, пример нормальный. А какие способы расширения ты еще знаешь?
ну и еще - а как на счет бизнес логики?
там уже не так тривиально все как с задачами общего назначения
и тебе придется выбирать "сделать просто" или "сделать гибко"
ну короч с SRP - посмотри объяснение того же дяди Боба

Ihor
11.04.2018
13:55:26
это уже зависит наппрямую зависит от бизнеса, если надо “просто” то “просто”, если есть вероятность выиграть от “гибко” то “гибко"

Sergey
11.04.2018
13:55:31
берем модуль, этот модуль используется для того-то для того-то. И вот это "что-то" интересует только одного конкретного человека

Ihor
11.04.2018
13:55:34

Sergey
11.04.2018
13:55:57
ну то есть тебе для соблюдения SRP надо бизнес пониимать, структуру бизнеса
что мол "вот эта штука важна бухгалтерам, и они могут просить чето поменять тут.... а вот эта штука мерчендайзерм нужна"

Ihor
11.04.2018
13:59:38
о

Google

Ihor
11.04.2018
13:59:42
спасибо
но мы же не можем сказать, что СРП это про бизнес логику only?

Like
11.04.2018
14:01:13
Естесена нет. SRP - это просто твои заморочки :)

Sergey
11.04.2018
14:14:18
что бы разделять ответственности - надо уметь их определять
и вот это - оч сложная штука
ну например - почему active record нарушает SRP?
и почему например.... жирнющий модуль парсер YAML в 5К строк не нарушает SRP

Tex
11.04.2018
14:19:36
ну блин, это достаточно риторические вопросы.
на прикладных и технических штуках достаточно как правило перечислить список действий, которые делает модуль. и вдуматься в количество существительных, которые есть в этих действиях.
если их больше чем 1-2 - что-то идёт не так.
с объектами бизнес-логики это иногда сложнее, потому что в целом определения порой более размытые.

Ihor
11.04.2018
14:20:42
> если их больше чем 1-2 - что-то идёт не так.
мне нравится!

Tex
11.04.2018
14:28:08
> если их больше чем 1-2 - что-то идёт не так.
мне нравится!
а мне уже нет, перечитал и как-то слишком радикально. но подход ящитаю примерно такой должен быть.
5к строк в парсере норм, потому что он делает много всякого, но в одной области ответственности. условно мы умеем делать стопицот действий, но над одним субъектом.
AR - не норм, потому что она отвечает и за общение с базой и за логику самой модели. а если фразу "общение с базой" декомпозировать на "строит запросы, гидрирует, обновляет, etc" - субъектов получается значительно больше чем хотелось бы.

Mykola
11.04.2018
15:14:13
SRP - это такая странная штука, что она нарушается всегда
чтоб программистам не было спокойствия при жизни
для этого и придумана

andretshurotshka?❄️кде
11.04.2018
15:15:37
норм
одобряю

Yegor
11.04.2018
16:39:44
У меня новый блог пост на тему рефакторинга. Предлагается несколько уровней рефакторинга, через которые изучаем чужой код: http://www.yegor256.com/2018/04/10/learning-by-refactoring.html

Quantum Harmonizer
11.04.2018
18:24:17
couldYouPleaseRegisterServletContainerInitializerToDriveServletContextInitializersOtherwiseThrowAnException

Bohdan
11.04.2018
18:25:37


Егор
11.04.2018
18:38:31
У меня новый блог пост на тему рефакторинга. Предлагается несколько уровней рефакторинга, через которые изучаем чужой код: http://www.yegor256.com/2018/04/10/learning-by-refactoring.html
С интересом читаю ваши статьи, особенно те, что под тегом management, спасибо.
По новой статье - не соглашусь с "Make Names Shorter". Возьмём к примеру этот код: https://github.com/yegor256/takes/blob/master/src/it/file-manager/src/main/java/org/takes/it/fm/RsPage.java#L43
Тут используется сокращение Rs для Response, но узнать об этом можно только из комментария. Недостатки здесь в том, что "кошелёк Миллера" наполняется ненужными данными, возможны конфликты (вдруг Rs это Result, а не Response?), сложнее искать нужный код. Такие сокращения могут быть очевидны для автора кода, но не для всех остальных. И в каждом из проектов свой набор таких сокращений?

Google

Sergey
11.04.2018
19:51:59
С интересом читаю ваши статьи, особенно те, что под тегом management, спасибо.
По новой статье - не соглашусь с "Make Names Shorter". Возьмём к примеру этот код: https://github.com/yegor256/takes/blob/master/src/it/file-manager/src/main/java/org/takes/it/fm/RsPage.java#L43
Тут используется сокращение Rs для Response, но узнать об этом можно только из комментария. Недостатки здесь в том, что "кошелёк Миллера" наполняется ненужными данными, возможны конфликты (вдруг Rs это Result, а не Response?), сложнее искать нужный код. Такие сокращения могут быть очевидны для автора кода, но не для всех остальных. И в каждом из проектов свой набор таких сокращений?
Если делать иерархии по LSP, то не так уж и важно какой там префикс. Достаточно посмотреть на то что класс имплементит: Response.

Mykola
11.04.2018
22:51:53
если нужно что-то дополнительно посмотреть, то это скорее всего днище)

Bohdan
12.04.2018
06:51:20
https://habrahabr.ru/post/353292/
tldr: вся история языков программирования строится на костылях

F01134H
12.04.2018
06:56:29
?

Mykola
12.04.2018
06:56:34

F01134H
12.04.2018
06:56:37
Но статья интересная

Mykola
12.04.2018
06:57:07
потому что все думают мол "а кто ты такой, чтоб утверждать, что с++ говно"

F01134H
12.04.2018
06:58:01
Плюсы не говно)

Maksim
12.04.2018
06:59:18
А пхп не умер)

F01134H
12.04.2018
06:59:49
Угу
А с чего пхп должен уметь
Вроде это про джаву стереотип

Denis
12.04.2018
07:01:15

Mykola
12.04.2018
07:04:25
но всё никак...
уже давно прошли те времена, когда количество памяти влияло на синтаксис языка
уже давно должны были умные люди собраться и придумать хороший язык, лаконичный но читаемый
но нет!
давайте запилим go
еще один с++

Google

Bohdan
12.04.2018
07:09:20

Mykola
12.04.2018
07:09:38
или swift - еще одну скалу с масивами типа луа
или kotlin - просто потому что можем
пхп в этом плане вообще всех обскакал
каждая новая версия приносит несколько фич, криво скопипизженых с других языков

F01134H
12.04.2018
07:18:35
Го свой яп запилим!

Mykola
12.04.2018
07:19:27
го уже есть)

Aleh
12.04.2018
07:22:20
https://martinfowler.com/articles/201803-refactoring-2nd-ed.html
Или было уже?

Mykola
12.04.2018
07:23:03
хм

Hell
12.04.2018
08:10:41
господа, а пост фаулера про второе издание рефакторинга на жо ес - это первоапрельская шутка или нет ?
это же розыгрыш

Bohdan
12.04.2018
08:12:23
отрефакторил рефакторинг

Hell
12.04.2018
08:13:25
надо было на ассемблере делать издание.
он более объектно ориентирован, чем этот ваш JS
код более поддается рефакторингу

Artem
12.04.2018
08:15:51

Дмитрий
12.04.2018
08:19:16

Sergey
12.04.2018
08:19:48

Aleh
12.04.2018
08:20:37

Google

Hell
12.04.2018
08:21:30
вы не поняли первоапрелькою шутку от фаулера? Это была аллюзия на "Искусство программирования" Кнута

Sergey
12.04.2018
08:22:11
Как и все)
не я уже посмотрел 10 часов выступлений Кея.... ООП это когда у тебя есть это самое something in beetween а объекты там вторичны

Hell
12.04.2018
08:22:20
а вы повелись

F01134H
12.04.2018
08:24:58
10 часов

Sergey
12.04.2018
08:25:19
https://www.youtube.com/playlist?list=PLoiqv3YdQVW6Op71pW5eCfPjR4hvVipSQ
отдельно меня порадовало последнее видео в этом списке
там где Кей и Армстронг (один из создателей Erlang) обсуждают prolog
и то что смолтак после пролога вообше шляпа

Дмитрий
12.04.2018
08:53:56
Пролог - ето подарок богов
За наши грехи

Sergey
12.04.2018
10:29:16
если нужно что-то дополнительно посмотреть, то это скорее всего днище)
Так а что значит "дополнительно". Вот открыл класс, вот у него extends/implements есть. Ничего больше открывать не надо, чтобы узнать что класс наследует. Все что относится к классу находится в его модуле - его имя, его родители, его поля/методы, его документация в конце концов. Если класс при этом максимально cohesive, то он будет с большой вероятностью убираться на один экран. И пофиг как бы что его зовут RsPage, ибо сразу за именем будет implements Response

Adel
12.04.2018
10:35:56

Sergey
12.04.2018
10:36:38

Adel
12.04.2018
10:37:41

andretshurotshka?❄️кде
12.04.2018
10:37:51

Shmaltorhbooks
12.04.2018
10:38:31