Depend on abstractions, not on concretions.
Что такое модули верхних уровней? Как определить этот уровень? Как оказалось, все очень просто. Чем ближе модуль к вводу/выводу, тем ниже уровень модуля. Т.е. модули, работающие с BD, интерфейсом пользователя, низкого уровня. А модули, реализующие бизнес-логику — высокого уровня.
Что такое зависимость модулей? Это ссылка на модуль в исходном коде, т.е. import, require и т.п. С помощью динамического полиморфизма в runtime можно обратить эту зависимость.
Полный курс "Шаблоны разработки программного обеспечения" (ссылка на плейлист). Шаблоны GRASP, GoF, антипаттерны, рефакторинг Все материалы курса лекций (включая конспект лекций) на канале автора SlideShare
От себя. Я просмотрел пока что только 4 лекции но уже чувствую уверенность в тех знаниях что я уже приобрел. Однозначно подача хорошая, не занудная. Автор видно что не только знает предметнуб область но и любит в ней докапываться до "что, где, когда и почему".
Однозначно рекомендую всем кто желает углубить свои знания в области ПРАВИЛЬНОГО проектирования систем(бизнес логики). Великолепный курс! Спасибо автору за то что предоставляет её бесплатно на своём Youtube канале. Уверен что там есть ещё много чего полезного.
Признаюсь, я не хотел внедрять TDD потому что было ленно писать код "который ничего не создаёт и не делает". Но философия дяди Боб-а мне очень понравилась. Как говорилось у Карлоса Кастанеды :
"Вещи не меняются, меняется лишь наш взгляд на них."
С сегодняшнего дня я начну внедрять ТDD в свои проекты. Хоть дядя Боб и говорит что внедрение тестов в уже написанный код "безумие не стоящее и гроша" я сделаю это, скажем так - для общего развития. Начну с последнего проекта "Conversation App".
Рекомендую всем посмотреть видео ниже. Если вы сомневаетесь в пользе тестов и существующие аргументы вас не убеждают, Дядя Боб поможет вам взглянуть на это по другому, да так, что вам придётся уже искать причину не следовать TDD (сразу предупрежу, лень - это не причина). Ну и попутно вы узнаете интересное про архитектуры, и особенности архитектур приложений.
Смотрим видео.