Я долго думал об этой теме.
Мой вывод - дело не в количестве, а в качестве и контексте.
Например, правильная структура проекта превосходит комментарии, объясняющие, где находятся файлы (реализация или намерение)
Точно так же классификация для уточнения именования контекста бьет (Идентификатор пациента -> Идентификатор пациента).
Я полагаю, что DDD имеет право голоса в хорошей документации - классификация обеспечивает контекст, контекст создает границы, и границы приводят к преднамеренным реализациям (это то, где это принадлежит, а не должно существовать).
Сам по себе код недостаточно хорош, чтобы считаться документацией. Проблема в большинстве случаев заключается не в том, что работа кодов комментируется или не комментируется, а скорее в движущей силе (доменной логике).
Иногда мы забываем, кто главный - если код изменяется, логика или логика домена не должны изменяться, но если логика или логика домена меняется, код определенно изменится.
Согласованность также очень важна - соглашение само по себе бесполезно, если оно не соответствует.
Шаблоны проектирования - это не просто «хорошая практика», это то, что нам, разработчикам, следует понимать. Говорить разработчику о добавлении нового типа в Factory лучше, чем добавлять новый тип в метод (когда контекст и согласованность слабы или отсутствуют).
Половина борьбы - это знакомство .
Кроме того, API, которые, похоже, поддерживают большую часть документации, также очень чувствительны к домену и контексту. Иногда дублирующая функциональность не является злой (одно и то же, разные контексты) и должна рассматриваться как отдельная.
С точки зрения комментирования всегда хорошо указывать на доменную логику, лежащую в основе рассуждений.
Например, вы работаете в медицинской промышленности. В вашем методе вы пишете "IsPatientSecure = true;"
Теперь любой порядочный программист может понять, что пациент помечен как защищенный. Но почему? Каковы последствия?
В этом случае пациент является заключенным, которого благополучно перевели в больницу вне помещения. Зная это, легче представить события, которые ведут к этому моменту (и, возможно, что еще должно произойти).
Возможно, этот пост кажется в лучшем случае философским, но помните, что вы пишете «рассуждения» или «логики», а не код.