Пишите код, который способен адаптироваться к изменениям!За счет применения принципов, рассмотренных в книге, вы сможете создавать код, который приспосабливается к новым требованиям и непредвиденным сценариям без значительного переписывания. Гэри Маклин Холл описал гибкие практики, принципы и паттерны для проектирования и написания кода, который может развиваться быстрее и легче, с меньшим числом ошибок, поскольку он не препятствует изменениям.В пересмотренное, обновленное и расширенное второе издание книги были добавлены важнейшие практические аспекты процесса Kanban, инверсии управления и создания многократно используемых абстракций. Опираясь на более чем десятилетний опыт консультирования и разработки, автор обновил свой бестселлер углубленным раскрытием модульного тестирования, рефакторинга, чистого внедрения зависимостей и многих других вопросов.Основные темы книгиНаписание кода, который запускает в работу и дополняет Scrum, Kanban или любую другую гибкую инфраструктуруРазработка кода, который может пережить крупные изменения в требованияхПланирование способности к адаптации за счет применения зависимостей, уровней, интерфейсов и паттернов проектированияВыполнение модульного тестирования и рефакторинга в тандеме с извлечением большей пользы от обоих приемовИспользование приема "золотого мастера" для того, чтобы сделать унаследованный код адаптивнымПостроение кода, соответствующего принципам SOLID: единственной обязанности, открытости/закрытости и подстановки ЛисковСоздание меньших интерфейсов для поддержки более многообразных клиентских и архитектурных потребностейИспользование в своих интересах лучших практик внедрения зависимостей для увеличения степени адаптации кодаВнедрение зависимостей с помощью паттерна "Лестница" и избегание распространенных антипаттернов.Книга предназначена для программистов с любым уровнем квалификации, ищущих более практичный взгляд на паттерны проектирования, принципы SOLID, модульное тестирование, рефакторинг и связанные с ними темы.Читатели книги должны владеть C#, Java, C++ или похожим объектно-ориентированным языком и быть хорошо знакомыми с основными приемами процедурного программирования.