Круто! Спасибо. Тот случай, когда сам дошёл до понимания половины этих принципов, и узнал, что 20 лет назад из уже кто-то сформулировал. Получился паттерн - Инверсия обучения :)
Сергей, здравствуйте! Спасибо большое за лекции, я ваш поклонник!) Когда вы объясняете паттерн "Indirection" на 52:40, ваш пример с вынесением интерфейса показался не совсем корректным, так как суть паттерна "Перенаправление", на мой взгляд, заключается в том, чтобы разорвать двустороннюю связь между двумя классами посредником. (в 2008 году на слайде был корректный пример с продажей, репозиторием и базой данных) Могу ошибаться, но вроде по описанию паттерна все так :)
Пихать суммирование в строчку чека - какая-то дичь. Уже лет 6 не пишу логику в классах с данными. DTO хранят данные, Services обрабатывают то что соответствует интерфейсам. Объекты почти не наследую от других объектов, зато использую множественное наследование интерфейсов. Код получается простой. Брат жив. Придумали себе какие-то принципы, и теперь страдают.
@@uasco-da-gama ну да, либо каждые полгода менять версию java либо сидеть с дырами в безопасности (или криво работающими фичами). Все такое заманчивое, прям даже не знаю что и выбрать.
есть все же такие языки на которых не стоит писать что-то сложнее калькулятора и простенькой бизнесслогики, понятно что спилить вековой дуб можно и пилкой для ногтей :) но это очень долго и утомительно.
Почему-то сказанное по поводу индирекшина не коррелирует со слайдом. Там описано создание Хранилища-чистовыдуманного, а не то, что мы инверсируем зависимость через интерфейс. А в целом:"Об очевидных вещах нужно писать снова и снова. Чтобы они не теряли своей очевидности в глазах людей. Чтобы люди, подгоняемые гнетом действительности не могли отринуть очевидное, как малозначимое. Чтобы они не могли придумать хитроумных псевдоаргументов с целью оправдать свое пренебрежительное отношение к очевидным вещам. Очевидные вещи такого не прощают. И планирование проектов тому не исключение." Из старой и удаленной статьи с Хабра.
Сергей, приветствую! Спасибо за Ваши труды.. Есть вопрос, в 33 -35 лет , есть ли шанс устроитьсья junior Java или это конец))? До этого работал немного iOS приложения покупал, последний год Golang junior был, но не срослось.. Сейчас в тестировании, но очень хочу научиться и стать разработчиком. Главный вопрос, говорят, что после 30 Junior устроиться очень сложно, это так?
@@uasco-da-gama Вы же говорите, что это в нашей дикой стране с 20-ти летними синьорами типа такое в ИТ- 30 лет и на пенсию. Мне 36 и учу Джаву, есть желание сменить работу.
Ребят, возник вопрос, который прям не дает покоя: - Не противоречит ли принципе DIP паттерну Creator. По DIP надо объекты передавать другим объектам через их интерфейсы, а по Creator'у эти объекты следует создавать там, где они используются. Как разрешить это противоречие?
Dip не про это, он говорит, что типу надо зависеть от абстракции, а не от реализации. это немного другое нежели, выдача инстанса по запросу. Один за архитектуру связей, второй за поведение при создании. Это проще рассмотреть на конкретном примере, но сколько встречал, то обычно это либо неправильное понимание/смешение понятий, либо незаконченная декомпозиция и как следствие нарушение coupling/cohesion
Проблема с обьектами, которые используются для сериализации. Приходит/отправляется в Jira какую json, где логически обьект 1 , задача, а api реализован так, что в задаче обьект транзакция, в которой лист транзакций, в которых статус, в которых лист статусов, а приходит обьект с одними полями, уходит с немного другими. Когда совсем жопка, конечно, пишется кастомный сериализатор, но не будешь пилить его прям на все извращенные поля, иначе сам сериализатор превратится в говнокод. Вот и приходится выбирать среднее из зол, и брать информацию через вложенные обьекты, если это меньшее из зол...
Зачем нужны вообще публичные поля, если они нарушают принцип инкапсуляции? К примеру в Java есть класс Point для повышения производительности для работы с графикой там поля публичные, а если брать к примеру PHP (у которого поля по умолчанию публичные)?
Шо за тотальний буллшіт? Indirection - це про інтерфейси? Рілі, блять?)) Учіть матчасть, господа, indirection - це паттерн посередник між сервісами і не важливо чи в GoF паттернах чи в GRASPі.