Прочёл и рекомендую к прочтению книгу Джуста Виссера “Разработка обслуживаемых программ на языке С#”. Книга содержит набор критериев, выработанных консультантами Software Improvement Group после анализа сотен реальных систем. Авторами были сформулированы 10 простых рекомендаций, позволяющих писать программное обеспечение, которое легко поддерживать и развивать.
Перечилю эти 10 рекомендаций/критериев:
Короткие блоки кода (max. 15 строк кода). Короткие блоки проще понять, тестировать и переиспользовать
Простые блоки кода (max. 4 точки ветвления). Это упрощает модификацию и тестирование
Не дублируйте код. При дублировании исправлять придётся в нескольких местах.
Уменьшайте размеры интерфейсов (передавайте в блоки кода max. 4 параметра). Объединяйте параметры в объекты. Небольшие размеры интерфесов упростят понимание и переиспользование кода.
Разделяйте задачи на модули (большие модули образуют тесные связи). Разделяйте сферы ответственности модулей и скрывайте детали реализации за интерфейсами. Такой код проще модифицировать и контролировать.
Избегайте тесной связи между элементами архитектуры. Минифицируйте объем экспортируемого кода, доступного в других компонентах.
Сбалансируйте архитектуру компонентов (min 6, max 12, optimal 9 компонентов одинакового размера). Проще искать код и обеспечить изоляцию.
Следите за размером базы кода. Удаляйте лишний код. Предотвращайте разрастание кода. Небольшой размер продукта, проекта, команды - важный фактор успеха.
Автоматизируйте тестирование. Это делает разработку предсказуемой и менее рискованной.
Пишите чистый код. Не оставляйте грязи. Обслуживать чистый код намного проще.
Кроме примеров кода, книга содержит типичные возражения по каждой рекомендации/критерию. Среди них встретились старые знакомые, кочующие из проекта в проект. Большое спасибо авторам. Книга читается легко, имеет небольшой размер и хорошо структурирована.