
Борис
12.09.2017
15:46:21
Имхо - PSR лучшее что произошло с РНР за последние годы, и продолжать ебашить свои велосипеды и свои 15тые по счету ахуенные стандарты это бред - вместо того чтобы потратить время на улучшение текущих.

Alexander
12.09.2017
15:46:30
Ну класс это не только поведение. А интерфейс это только поведение

Sergey
12.09.2017
15:46:35

Борис
12.09.2017
15:46:51

Google

Sergey
12.09.2017
15:47:00
короч Боря, приходи за пивом потрещим
имхо ты слишком категоричен

Борис
12.09.2017
15:48:31
как-нибудь

Sergey
12.09.2017
15:48:46
помимо Serializable и т.д.

Alexander
12.09.2017
15:49:16
Вам не может быть плевать класс это или интерфейс. У вас разные правила игры с интерфейсами и класами. Вот если ваш Catalog реализует какой то интерфейс, то значит он определяет поведение указанное в интерфейсе. Это явно не кто.
Да любой интерфейс это поведение.

Sergey
12.09.2017
15:49:45
поведение = протокол, ты можешь поменять поведение не меняя интерфейс

Яўген
12.09.2017
15:52:38
Интерфейсы ради интерфейсов уж точно не нужны

Google

Sergey
12.09.2017
15:53:14
у меня есть например такие интерфейсы:
- FeeCalculator - производит расчет фии, клиентскому коду плевать, это "должна быть такая штука которая расчитываем мне fee"
- Transaction - некая штука которая описывает некие транзакции и умеет их бродкастить
то есть "поведение" это не прилагательное, это роль, кто делает это поведение
ох чую
https://gist.github.com/

Arky
12.09.2017
15:55:08
написал свой первый контроллер)

Sergey
12.09.2017
15:55:54

Arky
12.09.2017
15:56:52
Читал книгу Кевина Янка. Там говорилось что это называется контроллер)

Juri
12.09.2017
15:56:54

Sergey
12.09.2017
15:57:15

Alexander
12.09.2017
15:57:30
FeeCalculator - вы не путаете абстрактные классы и интерфейсы?

Sergey
12.09.2017
15:57:31
и как понять контроллер перед тобой или нет?

Arky
12.09.2017
15:57:55
Они принимают и обрпбатывают запросы?)

Sergey
12.09.2017
15:58:05
точнее ваша проблема - вы делаете между классами, абстрактными классами и интерфейсами разницу
с точки зрения именования разницы нет никакой

Juri
12.09.2017
15:59:00
вот набросились на новенького

Arky
12.09.2017
15:59:12
))

Juri
12.09.2017
15:59:14

Arky
12.09.2017
16:01:20
Там только говорилось о контроллерах и шаблонах) я думал контроллер получает запрос и вкладывает нужный шаблон)

Google

Juri
12.09.2017
16:02:25
плохая книжка

Arky
12.09.2017
16:03:11
:C
Просто хотел узнать насколько это говнокод)

Alexander
12.09.2017
16:06:11
То есть по вашему нет ни какой разницы меэжу классами, асбстрактными классами и интерфейсами? Мы с вами говорим о проектировании. Все эти сущности дают возможность проектировать. Интерфейс определяет какие методы должен определить класс.
Возьмите любой пример кода связанный с интерфейсом и будет понятно что интерфейс дает какое то поведение. Именно поэтому их чаще всего называют с суфиксом able. И именно поэтому можно реализовывать несколько интерфейсов. Для того чтобы сказать, что класс имеет вот такое поведение, и вот такое поведение. Сколько методов в вашем интерфейсе FeeCalculator?

Sergey
12.09.2017
16:09:52
придумайте мне название для "поведения" вычисления fee
FeeCalculable?
это ж чушь, мне нужна конкретная "вещь" которая делает для меня что-то
PasswordEncoder, ProductRepository, OrdersGateway, EventDispatcher, Notifier
интерфейсы оканчивающиеся на able это скорее редкость


Alexander
12.09.2017
16:12:32
Если вы говорите о том как назвать интерфейс, то это уже как угодно. Все зависит от того для чего он нужен.

Sergey
12.09.2017
16:13:06
есть 2-3 стратегии распределения этих fee (зависит от конфигурации системы)

Alexander
12.09.2017
16:14:12
ну я не говорю что это строгое правило. Просто Интерфейс всегда отвечает на вопрос "Какой ". У вас по названию может быть хоть просто одна буква. Но все ровно интерфейс отвечает на вопрос "Какой" а не что.

Sergey
12.09.2017
16:14:45

Alexander
12.09.2017
16:14:54
Я понял, у нас с вами спор только из за того "как назвать интерфейс".

Sergey
12.09.2017
16:15:09
вот как вы выделяете интерфейс?
как вы назовете интерфейс для энкодера паролей?

Google

Alexander
12.09.2017
16:15:29
Какие нужны примеры, если интерфейс это определение поведения? Поведение - это какой? или это что?
Да еще раз, я могу его хоть одной буквой назвать.
просто i

Sergey
12.09.2017
16:15:53
это роль
роль это существительно, это "кто/что"

Alexander
12.09.2017
16:16:21
Ну пусть будет "что делает". Но точно не что или кто.

Sergey
12.09.2017
16:16:27

Alexander
12.09.2017
16:16:33
Потому что это поведение

Sergey
12.09.2017
16:16:39
у вас есть очень простая штука для того что бы декларировать поведение - роли

Alexander
12.09.2017
16:16:46
ты же не можешь создать поведение?
вот если бы мог то это было бы что или кто

Sergey
12.09.2017
16:17:10
в смысле "создать"? я могу создать роль
"строитель" - строит, что именно - определит конкретная реализация и отразит это в имени.
"врач" - его поведение - лечить/диагностировать
"репозиторий" - его поведение - хранение вещей
"калькулятор" - что-то считает
"энкодер" - что-то энкодит
"шифратор" - что-то шифрует
попробуй просто вот эти поведения (шифрование хотя бы) задать вопросом "какой"

Google

Sergey
12.09.2017
16:20:11
https://www.amazon.com/Object-Design-Roles-Responsibilities-Collaborations/dp/0201379430
вот хорошая кгина на эту тему

Gaiaz Iusipov
12.09.2017
16:20:21
Как в анекдоте
Чем мерить амперы? Амперметром
А напряжение?
Напряжометром

Sergey
12.09.2017
16:21:35
опять же хороший пример - сбор метрик. Нам надо что-то мерять - у нас есть для этого роль - MeasuringDevice.
например, и будет у тебя и амперметр и вольметр
(если для задачи ок что пофиг что нам дали))

Alexander
12.09.2017
16:22:01
И все это поведение. Вы не можете создать интерфейс врач, вам нужно будет создавать класс врач. Я же не утверждаю что всегда интерфейс надо называть по одному правилу, я вам сказал вы как угодно можете называеть его. Но как вы его не назовете это всегда поведение. Мы с вами спорим о разных вещах, вы спорите про то как называть интерфейсы, я спорю про то за что отвечают интерфейсы. Пусть будет не "какой" пусть будет "что делающий".

Sergey
12.09.2017
16:22:58
если у тебя класс называется так же как и интерфейс то значит тебе не нужен интерфейс

Arky
12.09.2017
16:23:38

Sergey
12.09.2017
16:23:40
интерфейс - обобщенное описание роли имеющей какую-то ответственность. Абстрактный класс - тоже самое.
экономия 5-ти минут на именовании, на разделении и т.д. может потом привести к часу "разбираться как же это работает"

Arky
12.09.2017
16:27:21
Понял. Спасибо)

Sergey
12.09.2017
16:28:43
Alexander
> я спорю про то за что отвечают интерфейсы.
интерфейсы отвечают за описание зоны ответственности, и поскольку все сущности должны именоваться существительными (это ж сущности а не характеристики) то мы можем сказать что имя интерфейса отрадает роль, а к роли уже привязано какое-то поведение
такая трактовка тебя устроит?