@oop_ru

Страница 602 из 785
Sergey
11.04.2018
13:52:01
Вот ты наивный)
не, OCP проще чем SRP

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
берем модуль, этот модуль используется для того-то для того-то. И вот это "что-то" интересует только одного конкретного человека

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
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
?

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
https://martinfowler.com/articles/201803-refactoring-2nd-ed.html
прикольно. понравилось, что он год писал книгу и нигде не анонсировал

Дмитрий
12.04.2018
08:19:16
он более объектно ориентирован, чем этот ваш JS
У тебя просто чудовищная травма от него, но в этом никто не виноват

Sergey
12.04.2018
08:19:48
он более объектно ориентирован, чем этот ваш JS
если ты такое говоришь - ты просто не понимаешь что такое эта самая объектно ориентированность

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
а вы повелись

Sergey
12.04.2018
08:25:19
10 часов
у меня еще есть

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

Sergey
12.04.2018
10:36:38
public function doSomething(RsPage page)
Это - сам по себе косяк. Если RsPage - сабтайп Response по LSP, то следует декларировать функцию как doSomething(Response page)

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

Страница 602 из 785