Size: a a a

2020 August 21

СП

Сергей Предводителев... in Yii Framework 3
На основании каких критериев определяется делать класс с единственной реализацией или же использовать интерфейс?

Вопрос возник на примере этого PR для CsrfViewInjection.
источник

СП

Сергей Предводителев... in Yii Framework 3
Alexander Makarov
а issue есть?
нет, но в чатике нашёл, что вроде yii-debug надо подключить и будет выводится... попробую вечером.
источник

Д

Дмитрий in Yii Framework 3
Сергей Предводителев
На основании каких критериев определяется делать класс с единственной реализацией или же использовать интерфейс?

Вопрос возник на примере этого PR для CsrfViewInjection.
В интернете есть много инфы на эту тему
источник

СП

Сергей Предводителев... in Yii Framework 3
Что гуглить? Мне что-то не то все выдает
источник

DS

Dmitriy S in Yii Framework 3
Так и не вынесли валидацию, сейчас там есть нерабочие кейсы
https://github.com/yiisoft/yii-event/blob/master/src/EventDispatcherProvider.php#L87
источник

DS

Dmitriy S in Yii Framework 3
Сергей Предводителев
На основании каких критериев определяется делать класс с единственной реализацией или же использовать интерфейс?

Вопрос возник на примере этого PR для CsrfViewInjection.
Конкретно в этом пр не нужен, поищи для чего я предлагал его ввести и какую проблему это должно было решить. Смысл только если вынести реализацию из этого пакета
источник

СП

Сергей Предводителев... in Yii Framework 3
Dmitriy S
Конкретно в этом пр не нужен, поищи для чего я предлагал его ввести и какую проблему это должно было решить. Смысл только если вынести реализацию из этого пакета
Да, если выносить из пакета, то точно нужна.

Я не понимаю, как понять, что для класса не нужны будут альтернативные реализации. В данном случае почему у пользователя НИКОГДА не возникнет задачи подменить реализацию?

Хотя пока это писал... захочет подменить - подменит класс. Так?
источник

СП

Сергей Предводителев... in Yii Framework 3
То есть если реализация одна и она в одном и том же пакете, то интерфейс не нужен. Правильно?
источник

DS

Dmitriy S in Yii Framework 3
Сергей Предводителев
То есть если реализация одна и она в одном и том же пакете, то интерфейс не нужен. Правильно?
Нет, нет так. Я еще не учел один момент, когда с yii приложением будет использоваться не yiisoft/router, так что в этом случае ты прав, возможна подмена реализации, тогда интерфейс нужен
источник

DS

Dmitriy S in Yii Framework 3
А в этом пакете в конфиге контейнера нужно просто забиндить дефолтную реализацию
источник

СП

Сергей Предводителев... in Yii Framework 3
Получается всё субъективно и исходить из практики. Если разработчик пакета не видит кейсов, когда потребуется альтернативная реализация, то делать БЕЗ интерфейса. Если вдруг потом на практике понадобится интерфейс - то перепилить. Так?
источник

DS

Dmitriy S in Yii Framework 3
Сергей Предводителев
Получается всё субъективно и исходить из практики. Если разработчик пакета не видит кейсов, когда потребуется альтернативная реализация, то делать БЕЗ интерфейса. Если вдруг потом на практике понадобится интерфейс - то перепилить. Так?
Потом сложно будет прикрутить интерфейс, лучше сразу правильно проектировать.
источник

СП

Сергей Предводителев... in Yii Framework 3
Dmitriy S
Потом сложно будет прикрутить интерфейс, лучше сразу правильно проектировать.
Так вот и вопрос) Как понять, что правильно интерфейс сделать. Если разработчик на текущий момент не знает вариантов, когда может потребоваться больше одной реализации... как понять что сделать: интерфейс или просто класс?
источник

NO

Nex Otaku in Yii Framework 3
Для этого нужен опыт и чутьë либо совет от опытного человека )
источник

СП

Сергей Предводителев... in Yii Framework 3
Nex Otaku
Для этого нужен опыт и чутьë либо совет от опытного человека )
Это все что бы придумать кейс, когда потребуется несколько реализаций.  И если не придумалось с опытом, чутьем и советами - то делать без интерфейса. Так выходит :)
источник

NO

Nex Otaku in Yii Framework 3
Сергей Предводителев
Это все что бы придумать кейс, когда потребуется несколько реализаций.  И если не придумалось с опытом, чутьем и советами - то делать без интерфейса. Так выходит :)
Да, можно без него изначально. Позже добавить, когда понадобится.
источник

СП

Сергей Предводителев... in Yii Framework 3
В целом я понял. Спасибо!
источник

DS

Dmitriy S in Yii Framework 3
Nex Otaku
Да, можно без него изначально. Позже добавить, когда понадобится.
Ага, особенно в пакете, который юзается во многих проектах. Херак такой, граждане теперь мы используем интерфейс, а класс я переимновал и сделал еще несколько реализаций, будь-те добры меняйте теперь все свой код))
источник

AM

Alexander Makarov in Yii Framework 3
Я верно помню что @viperawa перевод для https://github.com/yiisoft/yii-cycle/pull/48  собирался делать?
источник

Д

Дмитрий in Yii Framework 3
ага. сегодня сделаю. вчера работал. сегодня вроде будет время.
источник