Code Complete охватывает множество вечных концепций, таких как:
- сильная сплоченность
- Слабая связь
- хорошие рутины
- оборонительное программирование
- самодокументируемый код
- обзоры программного обеспечения
- модульное тестирование
которые, безусловно, актуальны сегодня.
Некоторые концепции, отстаиваемые в CC, теперь синтаксически применяются в более новых языках, например, C # не позволяет определять переменные в подобластях таким образом, чтобы скрывать определение в суперобласти.
Другие концепции, такие как венгерская нотация для имен переменных, отошли на второй план в массовом программировании (хотя любой, кто все еще работает с Win32 API, будет категорически утверждать, что они живы и здоровы). Тем не менее, реальная концепция, лежащая в основе соглашения о присвоении имен переменных, заключается в том, чтобы передать необходимое значение и прояснить код. Концепции, которые, я бы сказал, также вечны.
В общем, из того, что я могу вспомнить (и быстрый взгляд в мою почтенную копию CC), я бы сказал, что это, безусловно, стоит рассмотреть.
Я не думаю, однако, что это восходит к по-настоящему вневременной природе Мистического Месяца Человека. МММ решает вопросы о том, кто выполняет работу, как и почему она это делает; а также стоимость и сложность (человеческих) коммуникаций. МММ решает проблемы, которые являются основополагающими для всего, что мы делаем. Для сравнения, CC фокусируется на практических и прагматических вопросах того, как мы это делаем. Иными словами, если проект отстает от графика, а менеджер решает добавить в команду 100 человек, написание понятного кода на самом деле ничего не изменит.
CC на самом деле не решает значительных проблем, мешающих нашей отрасли; но это обеспечивает хорошую основу для достижения лучшего результата в зачастую невозможной ситуации.
Я бы, конечно, счел их обоих обязательными для прочтения всем, кто интересуется разработкой программного обеспечения; и я бы рекомендовал перечитывать ММ всякий раз, когда вам нужно освежиться. CC стоит перечитать, если вы возглавляете команду разработчиков, устанавливаете групповые стандарты или обучаете новых разработчиков; кроме того, я лично нахожу, что я давно усвоил материал в CC и практикую его ежедневно.
Надежды, которые помогают. Они, безусловно, два из моих любимых.