Ho riflettuto su questo argomento per un po '.
La mia conclusione è che non si tratta di quantità, ma di qualità e contesto.
Ad esempio, una struttura di progetto corretta supera i commenti che spiegano dove si trovano i file (implementazione vs. intensione)
Analogamente, la classificazione per chiarire il contesto batte il nome (Id su un paziente - > Patient.Id).
Credo che il DDD abbia voce in capitolo in una buona documentazione: la classificazione fornisce contesto, il contesto crea confini e confini che portano a implementazioni intenzionali (questo è il posto in cui questo appartiene, piuttosto che deve esistere).
Il codice in sé non è abbastanza buono da essere considerato documentazione. Il problema nella maggior parte dei casi non risiede nel fatto che il funzionamento dei codici è commentato o non commentato, ma piuttosto la forza trainante (logica di dominio) non lo è.
A volte dimentichiamo chi è il capo - se il codice cambia, la logica del dominio o il ragionamento non dovrebbero, ma se la logica o il ragionamento del dominio cambia il codice sicuramente lo farà.
La coerenza è molto importante anche - la convenzione da sola è inutile se non è coerente.
I modelli di progettazione non sono solo "buone pratiche" - è un gergo che noi sviluppatori dovremmo capire. Dire a uno sviluppatore di aggiungere un nuovo tipo a una fabbrica è meglio compreso piuttosto che aggiungere un nuovo tipo a un metodo (dove il contesto e la coerenza sono deboli o mancanti).
La metà della lotta è familiarità .
Da una nota a margine, le API che sembrano favorire molta documentazione sono anche molto sensibili al contesto e al dominio. A volte la duplicazione della funzionalità non è malvagia (stessa cosa, contesti diversi) e dovrebbe essere considerata separata.
In termini di commenti, è sempre opportuno sottolineare la logica del dominio dietro al ragionamento.
Ad esempio, lavori nel settore medico.
Nel tuo metodo scrivi "IsPatientSecure = true;"
Ora, qualsiasi programmatore decente può capire che il paziente viene contrassegnato come sicuro. Ma perché? Quali sono le implicazioni?
In questo caso il paziente è un detenuto che è stato trasferito in modo sicuro in un ospedale fuori sede. Sapendo questo, è più facile immaginare gli eventi che portano fino a questo punto (e forse ciò che deve ancora accadere).
Forse questo post sembra filosofico al meglio - ma ricorda che è "ragionamento" o "logica" di cui stai scrivendo - non il codice.