@oop_ru

Страница 22 из 785
Sergey
09.12.2016
10:54:19
открытости закрытости
открытости закрытости чего?))

Evgeniy
09.12.2016
10:54:33
если я его открыл значит можно юзать

и потом мне сложно модифицировать свой код

Aleh
09.12.2016
10:54:49
если статики юзать вместо именованных конструкторов, то вполне ок

Google
Evgeniy
09.12.2016
10:54:52
я открыл доступ к тому к чему не следовало

Aleh
09.12.2016
10:55:14
ты также можешь сказать, что конструктор потом менять плохо

или любой другой публичный метод

ну да

так и есть)

Evgeniy
09.12.2016
10:55:49
менять публичный метод плохо, но иногда можно

если профит от изменения перекрывает недостатки

поэтому прежде чем написать public надо подумать

вообще менять публичный метод не так плохо

Aleh
09.12.2016
10:56:24
недостатки это только боязнь изменения?

Evgeniy
09.12.2016
10:56:34
менять публичный метод интерфейса еще хуже

не боязнь а проблема в том что кто то мог юзать этот метод

и ему придется менять код

Google
Evgeniy
09.12.2016
10:58:01
а если окажется что после его модификаций он что то публичное уберет

Aleh
09.12.2016
10:58:05
ну поменяй, так бывает

Evgeniy
09.12.2016
10:58:08
это затронит других

и так цепочкой

Aleh
09.12.2016
10:58:23
короче таки боязнь

Evgeniy
09.12.2016
10:58:38
если у тебя кода на 1000 строк то проблем нет

тут не боязнь а скорее предостережение

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

чем меньше публичных методов тем меньше тебе поддерживать

Aleh
09.12.2016
10:59:24
https://www.youtube.com/watch?v=9NANcPTbDBQ

Sergey
09.12.2016
10:59:27
я открыл доступ к тому к чему не следовало
они для этого и создаются, чтобы к ним был доступ вообще-то. или ты конструкторы тоже боишься открыть?

Evgeniy
09.12.2016
10:59:27
чем меньше поддерживать тем меньше кода

речь не о конструторе

Sergey
09.12.2016
11:00:00
именованные конструкторы - один из вариантов использования статических функций

Evgeniy
09.12.2016
11:00:26
например

Sergey
09.12.2016
11:00:26
функции без зависимостей, чистые - тоже плохо?

Evgeniy
09.12.2016
11:00:30
публичный конструктор

без аргументов

через некоторое время понадобилось логировать

ты пишешь (LoggerInterface $logger)

Google
Evgeniy
09.12.2016
11:01:25
и теперь все места где объект создавался надо передавать logger

гораздо лучше чтобы LoggerInterface $logger = new NullLogger())

было бы

и там где надо логировать уже передавать нужное

Aleh
09.12.2016
11:02:15
функции без зависимостей, чистые - тоже плохо?
почему бы для этого функции не юзать?)

Evgeniy
09.12.2016
11:02:18
я к тому что надо стараться максимально поддерживать свой код

Sergey
09.12.2016
11:02:19
ммм.. это щас к чему?

Evgeniy
09.12.2016
11:02:34
а если ты каждую неделю меняешь код

Sergey
09.12.2016
11:02:34
логировать именованные конструкторы или как?

Evgeniy
09.12.2016
11:02:40
от которого зависят другие люди

то как то не приятно

именнованные конструкторы это по сути теже фабрики

только они на основе разных вещей создают экземпляр

а речь шла о изменение публичных вещей, например тех же статичных методов, я говорю что не надо лишнего публичного делать, если в этом нет необходимости

в особенности в интерфейс

Sergey
09.12.2016
11:06:20
в интерфейс пихать статичекие сигнатуры?

это еще зачем?

Evgeniy
09.12.2016
11:06:48
getInstance для singleton местами вписывают

Sergey
09.12.2016
11:06:53
фабричные методы не люблю из за статических методов, которые доступны где угодно

мы за синглтоны сейчас не говорим

Google
Sergey
09.12.2016
11:07:48
речь идет конкретно о фабричных методах, а конкретно именованных конструкторах

Evgeniy
09.12.2016
11:08:26
хорошо давай детально

Sergey
09.12.2016
11:08:35
что мешает тебе сделать new Date в любом месте?

точно так же и Date::createFromTime(..)

что в этом конкретно плохого для тебя?

Evgeniy
09.12.2016
11:09:08
я стараюсь те элементы что могут быть использованны в пакете

Sergey
09.12.2016
11:09:16
в пхп нет пакетов

Evgeniy
09.12.2016
11:09:20
другими участниками команды по возможности выносить в интерфейс

namespace

Sergey
09.12.2016
11:09:37
у тебя все сущности и DTO тоже с интерфейсами?

Evgeniy
09.12.2016
11:09:38
если раз уже речь о пхп

Sergey
09.12.2016
11:09:52
ограничений на неймспейсы нет как package-private в джаве

так что они не в счет

Evgeniy
09.12.2016
11:10:31
я сейчас говорю о той ситуации

когда люди создают кучу публичных штук и не скрывают это интерфейсом

я не против именнованных конструторов

Sergey
09.12.2016
11:11:18
зачем тебе скрывать под интерфейсом статику?

Aleh
09.12.2016
11:11:22
и причем здесь статические методы(конструкторы)

Evgeniy
09.12.2016
11:11:23
но когда они не уходят за пределы твоего namespace

или если это явно не необходимая вещь

Google
Evgeniy
09.12.2016
11:12:01
чтобы юзать за пределами по поводу dto нет конечно не везде интерфесы

я не только про скрывать под интерфейсом статику имею ввиду

Sergey
09.12.2016
11:12:47
мы вроде о статике говорили

тебя понесло в интерфейсы и связанность

Evgeniy
09.12.2016
11:13:02
я говорю следующее что лучше прежде чем написать public стоит хорошо подумать

и если есть возможность писать private

Sergey
09.12.2016
11:13:22
ок... приватный именованный конструтор?)

и где ты его использовать будешь?

Evgeniy
09.12.2016
11:13:38
возвращаясь к конструкторам

приватный именнованный конструктор это глупо

так как он бесполезен

я хочу сказать что в большинстве случаев достаточно одного конструтора!

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

это не его проблема

его ответсвенность делать что полезное

и желательно только одно

а кому и как создавать этот класс это их проблема

потому что именнованные конструкторы они просто преобразуют данные передали им в формат понятный конструктору

Sergey
09.12.2016
11:17:23
потому что именнованные конструкторы они просто преобразуют данные передали им в формат понятный конструктору
не всегда, они имеют доступ к созданному обьекту. поэтому конструктор может быть вообще пустым

Evgeniy
09.12.2016
11:17:36
давай пример

я предпочитаю использовать ContainerInterface

и он обычно есть только в App а уже объект создается на основе того что запросил в конструкторе

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