
Sergey
20.01.2017
08:01:42

f4rt~
20.01.2017
08:02:12
много чего пробовал, потом назад на си вернулся, был erlang,scala

Rodion
20.01.2017
08:02:17
Каноничные труды по ООП, что есть класс в "космическом" смысле и т.п.

Google

Sergey
20.01.2017
08:02:18
ну можешь позагоняться и почитать исходники пыха

Rodion
20.01.2017
08:02:34
Или я хз

Sergey
20.01.2017
08:02:34
тебе надо что есть объект в космическом смысле и это... сложно)
потому что объект - это что-то что хранит состояние и поведение для работы с этим состоянием

Rodion
20.01.2017
08:03:10
Ага

Sergey
20.01.2017
08:03:21
мне дико нравится аналогия, что объект - это по сути мини комьютер
у него своя памяти, и ты можешь слать ему команды что делать
(то есть никаких геттеров и сеттеров)
стэйт должен лежать там где его надо обрабатывать
(GRASP принципы можешь почитать)
там это называлось "информационный эксперт"
Крэйг Ларман если что

Google

Rodion
20.01.2017
08:05:17
Инкапсулирует в себе состояние, позволяет им управлять по строго определённой логике

Aleh
20.01.2017
08:05:19
http://danielwhittaker.me/2015/05/25/is-a-cqrs-command-gof-command/?utm_medium=social&utm_campaign=postplanner&utm_source=twitter.com

Rodion
20.01.2017
08:05:23
Ой
Данные

Sergey
20.01.2017
08:05:32
ооооочень часто об этом забывают
а это важнее чем инкапсуляция стэйта

Rodion
20.01.2017
08:05:50
Ну я это и имел в виду после

da horsie
20.01.2017
08:06:05
про GRASP весьма неплохо изложено тут https://www.youtube.com/playlist?list=PLmqFxxywkatStbd9hdzVOS1hZa9dc56k4

Rodion
20.01.2017
08:06:13
Не добавил просто

Sergey
20.01.2017
08:06:30
нуу то есть цель не данные спрятать, а сделать так что бы логика работы с этими данными была строго в одном месте, и логично сделать это там где данные и лежат. Именно в том "компьютере" у которого данные в его личной памяти лежат
ну и Дядю Боба - Clean Code почитай

Rodion
20.01.2017
08:07:27
При этом важно сохранение назначения обьекта

Sergey
20.01.2017
08:07:34
там все советы дельные, просто часто не объясняется в чем профит

f4rt~
20.01.2017
08:07:53
А можно спросить?
https://refactoring.guru/ru
Кто-то в курсе
.хочу книжку почитать, стоит ли?

Rodion
20.01.2017
08:08:13
Да, на очереди вот

Sergey
20.01.2017
08:08:26
подходить к этому стоит исходя из возможных изменений
у меня как раз пример есть

Google

Rodion
20.01.2017
08:08:53
Если че, я про "класс == объект" вычитал в "elemental design patterns"

Sergey
20.01.2017
08:09:13
class User
{
// ...
public function isFirstMonthSinceRegistration(): bool;
public function isSecondMonthSinceRegistration(): bool;
}

Rodion
20.01.2017
08:09:30
Показалось не бредом, решил обсудить

Sergey
20.01.2017
08:09:41

da horsie
20.01.2017
08:10:00

Sergey
20.01.2017
08:10:08
вот в примере выше с юзером, это было как бы сделано что бы инкапсулировать данные. Ну мол что бы наружу не выходило знание о том, как мы храним дату регистрации чувака

f4rt~
20.01.2017
08:10:15

Sergey
20.01.2017
08:10:24
НО

f4rt~
20.01.2017
08:10:29
Код с Душком Фаулера, оно?

da horsie
20.01.2017
08:10:30

f4rt~
20.01.2017
08:10:44
?
спасибки

Rodion
20.01.2017
08:10:46
Ну да, там так и говорится. Это ради классификации отношений между четырьмя сущностями в ООП

Sergey
20.01.2017
08:11:16
все что больше - это уже не относится чисто к ООП

Rodion
20.01.2017
08:11:34
Поля и методы
Тип, объект, поле, метод

f4rt~
20.01.2017
08:12:14

Sergey
20.01.2017
08:12:28
короч... в моем примере если придет бизнес аналитик и скажет "а если прошло 3 месяца с регистрации что-то должно работать по другому" и нам приедся изменять User-а тоьлко ради этого. То есть этих методов там быть не должно (не та зона ответственности)
короч ладно
SOLID слишком жирный топик

Google

Rodion
20.01.2017
08:12:52
Да, я понимаю о чем ты

f4rt~
20.01.2017
08:12:53
Как вообще, имеет смысл читать относительно старую литературу, офк в ней могут подниматся темы вечные, но много времени и воды утекло, возможно есть куда более изящные решения подходы и тд?

Sergey
20.01.2017
08:12:53
работать надо

da horsie
20.01.2017
08:13:24
2008 г?
XP был провозглашен в 1999, думаешь много изменилось с тех пор?

Sergey
20.01.2017
08:13:24
только если ты по функциональщине и по теории типов загоняешься

Rodion
20.01.2017
08:13:46
Спасибо за пояснения)

f4rt~
20.01.2017
08:13:54

Admin
ERROR: S client not available

Sergey
20.01.2017
08:14:23
минорные/мержерные идеи не относятся к концепциям

da horsie
20.01.2017
08:14:23

f4rt~
20.01.2017
08:14:32

Sergey
20.01.2017
08:14:38
поддерживаю

Rodion
20.01.2017
08:15:51
Ввёл свою нотацию, попытался простые отношения между методами систематизировать и уточнить. Просто не с кем это все обсудить мне было)

Ilya
20.01.2017
08:19:48

Rodion
20.01.2017
08:20:11
Ну одно из другого
Он только с отношениями между методами попытался разобраться
Делегирование, перенаправление, вот это все
Clean code - на русском дерьмовый перевод у книги?

Google

Sergey
20.01.2017
09:05:32
Там чел пытался написать софт, автоматически выявляющий паттерны в коде
нуууу.... ценность софта такого весьма сомнительна. По сути все будет сводиться к анализу UML диаграммы отношений и т.д. и в целом... в этом не практической ценности. Намного интереснее просто дампнуть визуальную репрезентацию отношений (например тулзами вроде sonar или phpmetrics) и проанализировать на предмет связей.
ну то есть "паттерны" это ни в коем случае не цель а их наличие/отсутствие (хотя они так и так будут) - это так себе метрика
есть метрики получше
по метрикам - там есть LoC (lack of cohesion) и метрики для связанности. Вот эти штуки могут быть полезными

Aleh
20.01.2017
19:54:29
почему для cohesion не взяли перевод "сплоченность" или альтернативное слово "целостность"
почему зацепление блин)

Роман
20.01.2017
20:04:36

Aleh
20.01.2017
20:04:51
а coupling?)
связанность и связность ну ваще не ок, кмк

Роман
20.01.2017
20:05:36

Aleh
20.01.2017
20:06:26
надеюсь при проектировании ты их не путаешь?)
википедия плохой источник, но все-таки https://ru.wikipedia.org/wiki/GRASP

Роман
20.01.2017
20:07:06
Я их пока не использую. Я пока только изучаю.
Но название мне кажется верным.
Интересно мнение тех кто с ними давно знаком. ? Хотя это уже вопрос конкретно перевода и восприятия слова.

Sergey
21.01.2017
01:15:44
А это как раз зацепление. ?
Если по смыслу
- coupling - внешняя связанность
- coheasion - внутренняя связанность
То есть coupling - это то, как модули между собой связаны, а coheasion про то, как ты объеденяешь все в модули. То есть "сцепляешь" вместе. С этой аналогией проще добиться понимания что "связанность" должна быть низкой а "зацепление" высоким. Вариант перевода со "сплоченностью" мне тож нравится но...
хз, мне в последнее время больше нравится вообще их не переводить. Хотя если я засяду таки за свои статьи мне придется какой-то вариант перевода юзать потому можно похоливарить)
в целом вариант с "зацеплением" я у Немчинского когда-то подсмотрел
так и пошло у меня
у Грега Янга вообще проще - внутренняя и внешняя связанность