Артур Евгеньевич
25.09.2017
05:31:24
Как я понял
val
25.09.2017
05:32:46
мне кажется нужная вещь, если объект согласно реализуемого интерфейса возвращает объекты с другим определенным интерфейсом. итератор например.
Sergei
25.09.2017
05:33:01
Да, я загнул немного про "конкретные методы" - но это все еще правда про классы, которым дается доступ.
Google
val
25.09.2017
05:33:44
объекту итератору надо использовать private\protected методы доступа к элементам своего родителя, а родителю как коллекции их раскрывать необязательно
Sergei
25.09.2017
05:35:02
У меня так же возникало желание делать friend method (не класс) когда я реализовавал operator« (вывод в поток).
Sergey
25.09.2017
06:43:22
Anton
25.09.2017
06:56:00
Опять набрасываю: если хочется использовать friend классы значит абстракции выбраны не верно.
Хотя как по мне годная штука в определенных сутациях.
Sergei
25.09.2017
06:57:09
В целом я наверное мог бы по пальцам пересчитать случаи, когда вот прямо хотелось писать friend-код в C++.
По-моему, мой мир не стал бы существенно хуже, если бы C++ не поддерживало такой затеи, как friend-классы и методы.
Art
25.09.2017
06:58:44
Что за френд? Без усложнений и лишнего кода, тупо классы и все?
Anton
25.09.2017
06:59:11
Вот! Именно. Есть - хорошо, нету - ну и не надо.
Art https://wiki.php.net/rfc/friend-classes
Sergey
25.09.2017
07:01:12
@zloyuser ну вот в примере по ссылке - у тебя есть некий Person и какого черта он что-то должен знать о каком-то там HumanResourceReport?
Google
Sergey
25.09.2017
07:05:19
это открывает огромный простор по повышению content coupling между штуками
Art
25.09.2017
07:06:21
А паттерны используете на работе?
Sergey
25.09.2017
07:06:42
Art
25.09.2017
07:07:26
У меня в js отлично заходят синглтон, декаратор, наблюдатель, посредник (прокси), модуль
Sergey
25.09.2017
07:07:43
глобальный доступ к зависимостям и все такое + тебе скорее всего "сингелтон" не нужен
и короч ты сейчас на этапе "пихать паттерны везде". Скоро пройдет
принципы не забудь выучить которые в основе этих паттернов лежат (GRASP)
Артур Евгеньевич
25.09.2017
07:08:47
Декоратор очень удобен когда нужно добавить функционал в старый класс за который тебя выебут на ревью, и ты не хочешь чтобы git blame твое имя выводил в нем)
Art
25.09.2017
07:08:59
Не, в js я прокачан хорошо по es5
Sergey
25.09.2017
07:09:07
Art
25.09.2017
07:09:16
Так что использую при проектировании спа
А в php есть диспетчер событий или это только из ассинхрого мира?
Sergey
25.09.2017
07:10:36
я тебе больше скажу - в php есть возможность event loop юзать
da horsie
25.09.2017
07:17:19
Art
25.09.2017
07:17:24
Ну колбеки как костыль там аыглядат чет
Anton
25.09.2017
07:17:47
Sergey
25.09.2017
07:20:20
Google
Sergei
25.09.2017
07:21:44
Anton
25.09.2017
07:26:29
Sergey
25.09.2017
07:27:16
этим инструментом слишком легко сделать плохо
Anton
25.09.2017
07:28:08
Есть такие опасения, но по сравнению с Generic (еще один RFC) friend классы мелочь по опасениям.
Sergey
25.09.2017
07:28:35
и поддержку ко/контрвариантности типов
Anton
25.09.2017
07:29:10
А я хочю Generic + Method overload
Sergey
25.09.2017
07:29:28
Art
25.09.2017
07:29:33
Anton
25.09.2017
07:29:39
Но хотеть нам как минимум до 8 версии
@fes0r потому что я работаю с PHP. А в домашних проектах балуюсь С#.
Sergey
25.09.2017
07:30:29
Антон
25.09.2017
11:06:18
Друзья, а может ли мне кто нибудь объяснить для чего дружественные классы в c++? И не нарушение ли это инкапсуляции? Если нет, то почему?
Sergey
25.09.2017
11:11:04
у тебя левый класс может быть дружественным
и если передать инстанс в дружественный класс
то можно достучаться до приватных пропертей
так работает например в пхп если в статический метод User передать инстанс юзера
или нестед классы в джаве
Антон
25.09.2017
11:14:20
Sergey
25.09.2017
11:14:59
Google
Sergey
25.09.2017
11:16:03
и фабрики тоже отличный вариант
Anton
25.09.2017
11:17:04
К friend это отношения не имеет от слова совсем
Sergey
25.09.2017
11:18:08
Sergey
25.09.2017
11:18:12
Sergey
25.09.2017
11:18:35
я знаю что такое дружественные классы, ни в пхп, ни в джаве их нет
не надо об этом писать по 10 раз
Anton
25.09.2017
11:18:48
class User {
private $name;
public function equal(User $other) {
return $this->name === $other->name;
}
}
Sergey
25.09.2017
11:18:51
это пример чтобы человек понимал примерно что это такое
Sergey
25.09.2017
11:19:01
вопрос был нарушение ли это инкапсуляции - ответ да, нарушение. Как и protected является нарушением инкапсуляции в контексте наследования
по сути фрэнд классы это циклическая зависимость, а это уже свидетельствует об ошибках в проектировании. Но не ошибаться мы не умеем а потому очень редко и как кастыль оно норм
чем фрэнд классы хуже нестед классов например - тем что с nested классами мы ограничены одним пакетом, а в случае с friend классами "дружить может кто угодно" и это открывает огромный простор для повышения связанности и нарушения всех принципов по работе с зависимостями.
так же nested классы могут быть приватными - что удобно в случае с vo например и внутренеей кухни модуля. Билдеры - оч хороший пример.
Антон
25.09.2017
11:23:22
Теперь понятно, спасибо всем:)
Sergey
25.09.2017
11:23:33
к слову билдеры в контексте php неплохой пример для фрэнд классов
Антон
25.09.2017
11:25:18
Я просто увидел вот это
https://wiki.php.net/rfc/friend-classes
И у меня возникли вопросы
Sergey
25.09.2017
11:27:34
мне больше не нравится то что нужно в самом классе явно указывать зависимость на другой класс
class Fibonacci
{
friend FibonacciTest;
Sergey
25.09.2017
11:27:52
Google
Sergey
25.09.2017
11:28:13
вообще вот в твоем примере тестируемый код зависит от теста
Sergey
25.09.2017
11:28:15
даж хз, выглядит как-то не очень гибко
Sergey
25.09.2017
11:28:21
что мягко скажем намекает на то что что-то пошло не так
кастылек небольшой...
лучше б нестед классы замутили. но для php вряд-ли смогут нормально сделать
Patrik
25.09.2017
16:04:17
Кто мне может сформулировать, чего нового дядя боб кроме названия придумал в своей clean architecture, относительно гексагональной архитектуры кокберна?
Sergey
25.09.2017
16:05:47
clean architecture это считай надстройка, как гексагоналка надстройка над просто onion
но ИМХО меня смущают его "интеракторы"
andretshurotshka?❄️кде
25.09.2017
16:08:48
Тайпклассы норм
Patrik
25.09.2017
16:10:08