invariance
есть
Co(n)stantine👨‍🔬
незнаю кому верить, Сергею или Кириллу
Co(n)stantine👨‍🔬
Может и есть, но ему никто не следует
Ale
Кирилл Мокевнин говорил, что никакого Закона Деметры на самом деле нет
Тут ж недавно была статья, все зависит от ього, что Кирилл имеет ввиду
Co(n)stantine👨‍🔬
И Сегей говорит, что сеттеры и геттеры это плохо, а на самом деле все не так плохо видимо, много кто их юзает в том числе и симфони
Ale
Ну и в большинстве случаев они не нужны
Co(n)stantine👨‍🔬
А на счет публичных методов, согласен полностью с Сергеем
Тенпеннай
а есть годная лит-ра по ООП?
Бертран Мейер "Объектно-ориентированное конструирование программных систем" классика
Тенпеннай
человек спросил про ООП, я написал про ООП
Dumitru
Ну так я не против
Co(n)stantine👨‍🔬
@x3medima17 что там про контракты?
Dumitru
Мейер в свое время ввел такую штуку как Design by Contract
Co(n)stantine👨‍🔬
так а где почитать, в эой же книге написано?
Denis
и там и в почувствуй класс)
Denis
дима после его курса ооп так проникся эйфелем, что втирал его всем подрят)
Dumitru
@x3medima17 что там про контракты?
И сделал новый ЯП Контракты состоят из 3 частей - preconditions: условия которые должны выполняться в самом начале метода - посткондишн: условия которые должны выполняться после окончания метода - инварианты: условия класса которые должны всегда выполняться
Dumitru
Это если в двух словах
Dumitru
дима после его курса ооп так проникся эйфелем, что втирал его всем подрят)
Никому я не втирал его, а защищал от тех кто не прочувствовал класс)
Тенпеннай
так а где почитать, в эой же книге написано?
нет, в другой. Посмотри библиографию Мейера. Это, в принципе, чувак, книжки которого стоит прочитать
Co(n)stantine👨‍🔬
хорошо, посмотрю
Denis
Touch of Class
злой ты)
Dumitru
злой ты)
Немного)
Denis
хотя не, прочесть книгу полезно) эйфель главное не ставить
Dumitru
На самом деле поставить эйфель еще надо уметь
Co(n)stantine👨‍🔬
Dumitru
Шта?
Это книжка Мейера
invariance
охренеть, 1.2к страниц
Dumitru
Прикольная книжка, но затянутая
Denis
охренеть, 1.2к страниц
ооп? ну так то да)
Тенпеннай
кстати, пагни
Тенпеннай
а что за Вирта сткажете?
Тенпеннай
хотя это и оффтоп в ооп чате :3
Denis
книга по алгоритмам?
Denis
тяжело читается)
Тенпеннай
ну, про ценность его книг в 2017 году
Co(n)stantine👨‍🔬
Sergei
Из статического метода класса вызывать, создавая ту самую "единственную сущность"?
Sergey
все нормальные люди понимают что практика нужна выступлений, другое дело в том что стоит начинать с малой аудитории
это не первое мое выступление, где-то 3-ее, просто в тот период времени у меня завал на работе был
Sergey
стыдно потому что времени на подготовку я потратил в разы меньше чем хотел
Sergey
ну и из общения с людьми на курилке - никто ничего не понял
Sergey
Отдельный класс под регистрацию называемый менеджмент объектом, меня сильно удивил, как и существование этого класса
О чем ты? Про то что классы-менеджеры плохо - я это и говорил. Про то что нужны некие классы описывающие последовательность действий для конкретных операций (RegisterUserHandler) - это норм, главное что бы в реализации этого "класса" небыло логики. Тупо декларировалась последовательность действий а вся логика была бы распределена по другим маленьким объектам.
Sergey
эдакий моноид
Ale
эдакий моноид
почему моноид?
Sergey
а не, не моноид
Ale
просто последовательность действий задается монадой
Sergey
не спойлири, я сейчас в процессе изучения
Ale
а моноид это множество с единицей
Ale
О чем ты? Про то что классы-менеджеры плохо - я это и говорил. Про то что нужны некие классы описывающие последовательность действий для конкретных операций (RegisterUserHandler) - это норм, главное что бы в реализации этого "класса" небыло логики. Тупо декларировалась последовательность действий а вся логика была бы распределена по другим маленьким объектам.
на тему тдд, вот с такими классами-хендлерами тебе все равно надо подумать какая последовательность действий должна быть, в задаче больше описаны результаты действия, а не его составляющие куски, поэтому тебе все равно эту декомпозицию выдумать как-то надо. Для меня сейчас таким вариантом в какой-то мере является тдд, я начинаю писать тест и думаю, чтобы мне надо было здесь сделать и прихожу в итоге к последовательности нескольких действий. Этот тест потом лучше удалить или оставить? Он свою самую главную роль сыграл, а с точки зрения проверки нифига он не делает
Sergey
я его даже не пишу. Я сразу пишу хэндлер
Sergey
его нет смысла покрывать юнит тестами
Ale
ну, если я сразу напишу хендлер, то он будет куском говна
Ale
он мне там и обход графа сделает
Ale
и из консольки спросит через /dev/stdin
Ale
а такой тест, во всяком случае пока, помогает думать про интерфейсы и взаимодействия
Sergey
эм... ну я ж себя ограничиваю)
Sergey
можно начать например с такого: public function __invoke() { // get user // verify sequrity questions // deactivate account // send confirmation email }
Sergey
но через тесты норм
Sergey
просто я ленивый
Sergey
этот тест будет просто набором моков
Ale
ну я стабами пользуюсь
Sergey
тупо проверка последовательности
Ale
так я в данном случае
Ale
продумал интерфейс стабов
Ale
и контракт слегка
Ale
и понятно что дальше делать
Sergey
ну через моки тоже можно)
Ale
одон и тоже
Ale
в данном случае
Sergey
согласен
Ale
вот, я здесь про тест именно как инструмент проектирования
Ale
самым логичным решением потом будет выпилить его просто
Sergey
ну юнит тесты с большего именно в этом ценность и несут
Sergey
возможность проектировать "юниты"