Проблема Документация расходится с кодом в момент его написания. Не со временем — сразу. В типичном стеке нет триггера, который бы говорил: «Этот код изменился, проверьте, верен ли документ, описывающий его». Шесть месяцев я...
Проблема
Документация расходится с кодом в момент его написания. Не со временем — сразу. В типичном стеке нет триггера, который бы говорил: «Этот код изменился, проверьте, верен ли документ, описывающий его».
Шесть месяцев спустя этот документ не просто устарел. Это активно вводит в заблуждение, и никто не станет мудрее, пока кто-нибудь не последует этому и не обожжется.
Архитектура: документы как первоклассные узлы графа
Исправление не в том, чтобы «писать лучше документы» или «чаще просматривать документы» — это не масштабируется, и все это уже знают. Исправление является архитектурным: рассматривайте документацию как узлы в том же графе, что и ваш код, соединенные реальными ребрами.
Без ребер графа:
docs/auth.md ──(нет соединения)── auth/middleware.js
Документы устаревают незаметно. Нет триггера для обновления при изменении кода.
С ребрами графа:
docs/auth.md ──[описывает]──> auth/middleware.js
│
[фиксировать отпечатки пальцев]
Документы становятся связанными узлами — помечаются, когда они устарели, и автоматически отображаются, когда это необходимо.
Реализация: что попадает в организм
Три типа источников становятся узлами графа:
Файлы Markdown — README, docs/, заметки по архитектуре. Каждый файл становится узлом.
Строки документации — строки документации JSDoc и Python, связанные непосредственно с функцией.