@prophp7

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

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

Борис
12.09.2017
15:46:51
я это называю "надстройкой над стандартом"
Надстройка, это добавление, уточнение. А если ты берешь одно правило из 7 то считай, что ты ничего не берешь.

Google
Sergey
12.09.2017
15:47:00
Ну класс это не только поведение. А интерфейс это только поведение
с точки зрения типов разницы никакой. Если я вижу Catalog мне плевать интерфейс это или класс

короч Боря, приходи за пивом потрещим

имхо ты слишком категоричен

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

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

Да любой интерфейс это поведение.

Sergey
12.09.2017
15:49:45
Да любой интерфейс это поведение.
любое публичное API любого объекта описывает поведение. Интерфейс описывает публичное API.

поведение = протокол, ты можешь поменять поведение не меняя интерфейс

Яўген
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
и как понять контроллер перед тобой или нет?

FeeCalculator - вы не путаете абстрактные классы и интерфейсы?
нет, не путаю. А вот вы судя по всему чуть-чуть путаете

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

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

с точки зрения именования разницы нет никакой

Они принимают и обрпбатывают запросы?)
ну они скорее обработку делигируют кому-то другому и занимаются чисто control flow

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
ну я не говорю что это строгое правило. Просто Интерфейс всегда отвечает на вопрос "Какой ". У вас по названию может быть хоть просто одна буква. Но все ровно интерфейс отвечает на вопрос "Какой" а не что.

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
Ну пусть будет "что делает". Но точно не что или кто.

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
И все это поведение. Вы не можете создать интерфейс врач, вам нужно будет создавать класс врач. Я же не утверждаю что всегда интерфейс надо называть по одному правилу, я вам сказал вы как угодно можете называеть его. Но как вы его не назовете это всегда поведение. Мы с вами спорим о разных вещах, вы спорите про то как называть интерфейсы, я спорю про то за что отвечают интерфейсы. Пусть будет не "какой" пусть будет "что делающий".

Arky
12.09.2017
16:23:38
ну вот теперь вынеси весь SQL хотя бы в отдельные функции
Чтобы можно было заместо того чтобы писать весь SQL запрос, просто вставить свою функцию?

Sergey
12.09.2017
16:23:40
интерфейс - обобщенное описание роли имеющей какую-то ответственность. Абстрактный класс - тоже самое.

Чтобы можно было заместо того чтобы писать весь SQL запрос, просто вставить свою функцию?
вызвать а не вставить, это называется разделением ответственности.

Чтобы можно было заместо того чтобы писать весь SQL запрос, просто вставить свою функцию?
короч идея вот какая - код чаще читают чем пишут, и ты должен стараться выносить все что относится к мелким деталям в отдельные штуки которые прячут эти детали. Типа "захочешь узнать как именно я достаю эту инфу - зайди в функцию и почитай"

экономия 5-ти минут на именовании, на разделении и т.д. может потом привести к часу "разбираться как же это работает"

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

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

такая трактовка тебя устроит?

Страница 609 из 1387