Обговорення між Робертом "Дядьком Бобом" Мартіном та Джоном Аустерхоутом про їхні книги: "Філософія дизайну ПЗ" (APOSD) та "Чистий код". Вони обговорюють три основні теми: довжина методів, коментарі та розробка через тестування (Test-Driven Development, TDD).
Довжина методів
Джон:
- Розділення коду на невеликі частини важливе для зменшення когнітивного навантаження на розробників.
- Однак, надмірна декомпозиція призводить до поверхневих інтерфейсів та заплутаності.
Дядько Боб:
- Підтримує короткі функції, але визнає, що надмірна декомпозиція можлива.
- Важливо слідувати правилу "однієї речі" для методів.
Висновок:
- Обидва згодні, що модульний дизайн важливий, але не згодні з тим, наскільки далеко слід йти в декомпозиції.
Коментарі
Джон:
- Коментарі є важливими для документування коду та зменшення складності.
- "Чистий код" надто негативно ставиться до коментарів, що може призвести до недокументованого коду.
Дядько Боб:
- Вважає, що коментарі часто є знаком невдачі у вираженні ідей через код.
- Вважає, що код повинен бути самодокументованим, використовуючи довгі імена методів замість коментарів.
Висновок:
- Джон вважає, що коментарі є незамінними для абстракції та пояснення неочевидних деталей.
- Дядько Боб згоден, що коментарі можуть бути корисними, але має недовіру до них через часті помилки.
Розробка через тестування (TDD)
Джон:
- Підтримує юніт-тестування, але вважає, що TDD може призвести до поганого дизайну через тактичний підхід.
- Пропонує альтернативний підхід "bundling", де тестування проводиться після написання коду великими блоками.
Дядько Боб:
- Вважає, що TDD забезпечує меншу потребу в дебагінгу, документування низького рівня, менш зв'язаний дизайн та підтримку безстрашного рефакторингу.
- Вважає, що TDD не перешкоджає дизайну, а навпаки, сприяє йому.
Висновок:
- Обидва згодні, що юніт-тестування є необхідним.
- Джон вважає, що TDD може призвести до поганого дизайну, тоді як Дядько Боб не бачить таких ризиків.
Заключні зауваження
Джон:
- Вважає, що "Чистий код" занадто фокусується на неважливих речах та недооцінює важливість коментарів.
- Вважає, що дизайн має бути в центрі уваги, а не тестування.
Дядько Боб:
- Погоджується з деякими аргументами Джона, але продовжує підтримувати TDD та підхід "Чистого коду".