@oop_ru

Страница 52 из 785
Sergey
06.01.2017
18:05:18
Cover Your Ass Engineering - о да :-)

da horsie
06.01.2017
23:28:34
попытка #3 написать что-то объектное https://github.com/f3ath/git-changelog

Sergey
06.01.2017
23:30:00
https://github.com/f3ath/git-changelog/blob/master/src/Git/Commit.php#L23

мне кажется этому место в том месте, где ты лог читаешь

Google
Sergey
06.01.2017
23:30:42
https://github.com/f3ath/git-changelog/blob/master/src/Changelog.php#L20

тут можно было бы завернуть это добро в 2 стратегии

что бы избавиться от if-а

уберем лишний тест кейс

da horsie
06.01.2017
23:31:27
тут можно было бы завернуть это добро в 2 стратегии
мне он тоже не нравится, но я нешмогла

Sergey
06.01.2017
23:31:54
> но я нешмогла ну... просто два класса имплементящих что-то вроде ChangesetProvider

и третий класс который будет выбирать нужный по параметру

но в целом могу сказать что выглядит лучше чем в прошлый раз

еще не заглядывал в тесты

da horsie
06.01.2017
23:32:55
тестов мало

Git не покрыт

Sergey
06.01.2017
23:33:48
ну во всяком случае рефакторить меньше)

Google
Sergey
06.01.2017
23:34:28
https://github.com/f3ath/git-changelog/blob/master/src/Versions.php#L22

вот эта штука слегка смущает

чуть-чуть совсем

da horsie
06.01.2017
23:34:59
ну не фабрику же городить ради этого

Sergey
06.01.2017
23:35:16
а тебе фабрика и не нужна, тебе нужен какой-то процессор версий

ну или фабрика некой VersionCollection

если упарываться

что бы система типов описывала взаимодействие логики

da horsie
06.01.2017
23:35:52
тебя смущает plural название?

Sergey
06.01.2017
23:36:08
не, меня смущает что в конструктор может придти что угодно

da horsie
06.01.2017
23:36:18
может

Sergey
06.01.2017
23:36:22
но судя по статическому методу должен придти массив чего-то в строго определенном формате

то есть мы допускаем нарушение инварианта

da horsie
06.01.2017
23:36:30
но semver будет орать, если там лажа

Sergey
06.01.2017
23:36:43
ну мол в таком ключе скорее всего все ок

da horsie
06.01.2017
23:38:34
а из хороших решений что-то есть?

в смысле у меня в коде

Sergey
06.01.2017
23:39:11
RevisionRangeInterface норм

(еще бы без суффиксов но я не буду спорить по coding style)

Google
Sergey
06.01.2017
23:39:38
ну мол ты хорошо изолировал эту хрень

https://github.com/f3ath/git-changelog/blob/master/src/Changelog.php#L31

вот эту штуку бы вынести в какой-нибудь форматтер

но это мелочи

da horsie
06.01.2017
23:40:56
это да

Sergey
06.01.2017
23:42:08
блин напомни завтра

da horsie
06.01.2017
23:42:14
перевод?

Sergey
06.01.2017
23:42:26
перевод?
посижу поперевожу сейчас и пойду спать

просто хотелось с тобой как раз на примере твоего кода про SOLID чутка поболтать)

da horsie
06.01.2017
23:42:53
добро

Sergey
06.01.2017
23:43:15
у тебя там есть маленькие и простые примеры когда ты например SRP нарушил и парочка где ты их соблюдаешь

на примерах все же проще

da horsie
06.01.2017
23:44:09
https://github.com/f3ath/git-changelog/blob/master/src/GitGateway.php

вот этот класс мне не нравится

эдакий фасад-адаптер

без четкой ответственности

но я хз как без него

Sergey
06.01.2017
23:45:41
проанализируй где и зачем ты его юзаешь

da horsie
06.01.2017
23:45:52
чтобы разгрузить Changelog

Sergey
06.01.2017
23:45:54
ну то есть "там-то что бы версию забрать"

Google
Sergey
06.01.2017
23:46:09
там-то что бы чейнджлог забрать между двумя ревизиями

da horsie
06.01.2017
23:46:11
просто потому что без него сложно тестировать

Sergey
06.01.2017
23:46:29
просто потому что без него сложно тестировать
это мелочи, я предлагаю тебе добавить чуть-чуть interface segregation

https://github.com/f3ath/git-changelog/blob/master/src/GitGateway.php#L61

вот эта штука не понятна

da horsie
06.01.2017
23:47:34
в целом он переводит с терминов гита в термины чейнжлога

коммит -> изменение

Admin
ERROR: S client not available

Sergey
06.01.2017
23:47:54
в целом он переводит с терминов гита в термины чейнжлога
не не... посмотри зачем он используется там где используется

da horsie
06.01.2017
23:47:57
тег -> версия

ну у него много задач

Sergey
06.01.2017
23:48:41
ладно) завтра)

da horsie
06.01.2017
23:48:47
оке )

Sergey
06.01.2017
23:48:59
> ну у него много задач исходи из позиции "по каким причинам реализация может поменяться" а не по задачам

da horsie
06.01.2017
23:49:10
я из этого и исходил

получается, что "ни по каким"

я не вижу причин для его изменений

Sergey
06.01.2017
23:49:40
поменялся способ работы с git (с вызова git через exec на работу с какой-нибудь библиотечкой сишной интегрированной)

da horsie
06.01.2017
23:49:47
это задача Git

тут все ок

Google
Sergey
06.01.2017
23:49:58
это задача Git
да я ж не спорю)

getDiffUrl

вот метод например

da horsie
06.01.2017
23:50:26
этот тоже изолирован

Sergey
06.01.2017
23:50:37
этот тоже изолирован
что значит изолирован?

da horsie
06.01.2017
23:50:48
ну у него нет причин меняться

Sergey
06.01.2017
23:50:49
о вот к слову

смотри

public function getDiffUrl(string $rev1, string $rev2): string { $remote_url = $this->git->getRemoteUrl($this->remote); $remote = $this->remote_factory->createByUrl($remote_url); return $remote->getDiffUrl($rev1, $rev2); }

da horsie
06.01.2017
23:51:09
поменяется фабрика

Sergey
06.01.2017
23:51:24
у тебя во всем классе только этот метод использует remote_factory

da horsie
06.01.2017
23:51:25
добавится новый Remote\BitBucket

да

Sergey
06.01.2017
23:51:46
а хотя не, он юзает ->git

https://github.com/f3ath/git-changelog/blob/master/src/GitGateway.php#L39

а это чего?

da horsie
06.01.2017
23:52:40
получить дату коммита

тега

ну или версии в нашем случае

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