Ich habe eine Weile über dieses Thema nachgedacht.
Mein Fazit lautet: Es geht nicht um Quantität, sondern um Qualität und Kontext.
Zum Beispiel schlägt eine richtige Projektstruktur Kommentare, die erklären, wo sich die Dateien befinden (Implementierung vs. Intensität).
In ähnlicher Weise schlägt die Klassifizierung zur Verdeutlichung des Kontexts die Benennung (ID eines Patienten -> Patient.Id).
Ich glaube, dass DDD ein Mitspracherecht bei guter Dokumentation hat - Klassifizierung bietet Kontext, Kontext schafft Grenzen und Grenzen führen zu absichtlichen Implementierungen (hier gehört das hin, anstatt dass es existieren muss).
Code an sich ist nicht gut genug, um als Dokumentation zu gelten. Das Problem liegt in den meisten Fällen nicht darin, dass die Funktionsweise der Codes kommentiert oder nicht kommentiert wird, sondern darin, dass dies nicht die treibende Kraft (Domänenlogik) ist.
Wir vergessen manchmal, wer der Boss ist - wenn sich der Code ändert, sollte sich die Domänenlogik oder die Argumentation nicht ändern, aber wenn sich die Domänenlogik oder die Argumentation ändern, wird sich der Code definitiv ändern.
Konsistenz ist auch sehr wichtig - Konvention an sich ist nutzlos, wenn sie nicht konsistent ist.
Entwurfsmuster sind nicht nur „gute Praxis“ - es ist ein Jargon, den Entwickler verstehen sollten. Es ist verständlicher, einem Entwickler mitzuteilen, einer Factory einen neuen Typ hinzuzufügen, als einer Methode einen neuen Typ hinzuzufügen (wenn der Kontext und die Konsistenz schwach sind oder fehlen).
Der halbe Kampf ist Vertrautheit .
Nebenbei bemerkt, APIs, die eine Menge Dokumentation bevorzugen, sind auch sehr domänen- und kontextsensitiv. Manchmal ist das Duplizieren von Funktionen nicht böse (gleiche Sache, unterschiedliche Kontexte) und sollte als getrennt behandelt werden.
In Bezug auf das Kommentieren ist es immer gut, auf die Domänenlogik hinzuweisen, die hinter der Argumentation steht.
Zum Beispiel arbeiten Sie in der medizinischen Industrie. In Ihrer Methode schreiben Sie "IsPatientSecure = true;"
Jetzt kann jeder anständige Programmierer herausfinden, dass der Patient als sicher markiert ist. Aber wieso? Was sind die Implikationen?
In diesem Fall ist der Patient ein Insasse, der sicher in ein externes Krankenhaus gebracht wurde. Wenn man das weiß, kann man sich leichter vorstellen, welche Ereignisse bis zu diesem Punkt geführt haben (und was möglicherweise noch passieren muss).
Vielleicht scheint dieser Beitrag bestenfalls philosophisch zu sein - aber denken Sie daran, dass Sie über „Argumentation“ oder „Logik“ schreiben - nicht über Code.