Sergei
И да, оно тоже "сверху-вниз".
Sergei
@f3ath есть апдейты кода?
Sergei
(вроде в репо нп git не видно?)
🐴
не, я не пушил
🐴
да и не коммитил
🐴
пытаюсь построить свехну вниз
🐴
мне удалось избавиться от предствления вообще
🐴
и заодно от DTO)
🐴
мне кажется получается пока неплохо
🐴
блин
🐴
по LoD получается, что вообще объекты возвращать неправильно
🐴
никогда
🐴
как тогда LoD согласутеся с паттерном фабрика?
🐴
чето я не понимаю опять
Sergei
Эээ кто в данном случае LoD?
🐴
law of demeter
Sergei
Даётся мне, там говорится о том, что нехорошо лезть внутрь объекта, доставать его внутренние объекты, и что-то с ними делать.
Sergei
Если мы так делаем - мы слишком дофига много знаем о внутреннем устройстве того несчастного объект.
Sergei
Однако.
Sergei
Логически та же фабрика не делится с нами внутренним состоянием - она генерирует внешние сущности для нас.
🐴
LoD это про то, что не должно быть такого object.foo().bar()
Sergei
Ага.
🐴
аааа
🐴
я понял
Sergei
Фабрика всякий раз генерирует _новый_ объект для нас, который не явлоется её внутренним состоянием.
🐴
дада
🐴
правильно
🐴
тогда ок
🐴
спасибо
🐴
чето я раньше был лучшего мнения о своих способностях к ООП
🐴
на деле как-то все грустно оказалось
Sergei
Интересные темы поднимаешь. Я прямо хочу когда-то приехать в гости потрещать прямо на эту тему.
Sergei
Как-то так получается, что живым ООП в моём присутствии никто не интересуется - все разговоры обычно дальше middleware usage не идут.
🐴
https://gist.github.com/f3ath/686fcb4162ffa47fb6823cd316e13428
🐴
получилась вот такая херня
🐴
как ее разбить на части?
🐴
метод в 30 строк
🐴
это собственно моя основная логика приложения
🐴
центральный if смущает
🐴
$url и $revisions всегда ходят парой
🐴
выделить их в объект?
🐴
RevisionRange
Sergei
Смотрю
🐴
GitGateway получается херовый
🐴
добавил его в гист для понимания
Sergei
ReleaseNotes получает имя тага и печатает комментарии к коммиту?
Sergei
(или вообще ко всем таженым коммитам, если не указали)
Sergei
?
🐴
печатает все новые коммиты в теге
🐴
по сравнению с прошлым тегом
🐴
http://keepachangelog.com/en/0.3.0/
🐴
элемент changelog'а печатает
🐴
а
🐴
можно адааптер замутить
🐴
враппер вернее
🐴
к GitGateway
🐴
который будет создавать сложную херню типа RevisionRange
🐴
тогда и URL и набор коммитов получаются свойствами RevisionRange
🐴
и вроде как логично все выглядит
🐴
а бывает фасад к одному классу?
Sergei
Почему бы и нет.
Sergei
Класс который преобразует низкоуровневый интерфейс во что-то более высокоуровневое. Не вижу греха.
🐴
тогда это фасад наверно
🐴
фасад над GitGateway
🐴
понимашь, что я имею в виду?
🐴
о
🐴
я начинаю сходить с ума )
Sergei
почитал http://keepachangelog.com/en/0.3.0/ и картина как-то проясняется вроде
Sergei
итого
Sergei
ты хочешь тулзу, которая читает логи git репо и каким-то способом их парсит и куда-то красиво (?) печатает
🐴
да
🐴
в консоль
Sergei
ок
Sergei
теперь я понимаю почему ReleaseNotes на самом деле один из главных действующих лиц здесь
Sergei
мои мелкие капризы - getCommit муня сбило слегка с толку, т к я почему-то подумал что оно реально выкачает заданную ревизию из git
🐴
это getCommitDetails скорее
Sergei
readCommitDetails() мне бы помогло
Sergei
да, так я бы меньше плутал
Sergei
объект GitGateway настраивается на конкретное репо и потом все данные берет из него (типа "переклчиться ну другое репо" - так не планируется / не работает)
Sergei
мне кажется GitGateway выглядит весьма разумно