Vielleicht ist die Frage, ob dies machbar und sinnvoll ist, nicht die hilfreichste Frage. Die wahrscheinlich praktischste Antwort ist die akzeptierte. Ich werde dies auf einer philosophischen Ebene analysieren.
Eine Abdeckung von 100% wäre ideal, aber im Idealfall wäre sie nicht erforderlich oder viel einfacher zu erreichen. Ich überlege lieber, ob es natürlich und menschlich ist, als dass es machbar oder vernünftig ist.
Das richtige Programmieren ist mit den heutigen Werkzeugen so gut wie unmöglich. Es ist sehr schwierig, Code zu schreiben, der völlig korrekt ist und keine Fehler aufweist. Es ist einfach nicht natürlich. Da es keine andere naheliegende Option gibt, wenden wir uns Techniken wie TDD und der Erfassung von Code zu. Aber solange das Endergebnis noch ein unnatürlicher Prozess ist, wird es Ihnen schwer fallen, die Leute dazu zu bringen, ihn konsequent und glücklich zu tun.
Das Erreichen einer 100% igen Code-Abdeckung ist eine unnatürliche Handlung. Für die meisten Menschen wäre es eine Form der Folter, sie dazu zu zwingen, dies zu erreichen.
Wir brauchen Prozesse, Werkzeuge, Sprachen und Code, die unseren natürlichen mentalen Modellen entsprechen. Wenn wir dies nicht tun, gibt es keine Möglichkeit, die Qualität eines Produkts zu testen.
Schauen Sie sich einfach die Software an, die es heute gibt. Das meiste ist ziemlich regelmäßig durcheinander. Wir wollen das nicht glauben. Wir möchten glauben, dass unsere Technologie magisch ist und uns glücklich machen. Deshalb ignorieren, entschuldigen und vergessen wir die meiste Zeit, in der unsere Technologie durcheinander kommt. Aber wenn wir die Dinge ehrlich beurteilen, ist die meiste Software heutzutage ziemlich beschissen.
Hier einige Versuche, die Codierung natürlicher zu gestalten:
https://github.com/jcoplien/trygve
https://github.com/still-dreaming-1/PurposefulPhp
Letzteres ist äußerst unvollständig und experimentell. Eigentlich ist es ein Projekt, das ich gestartet habe, aber ich glaube, es wäre ein großer Fortschritt für das Handwerk der Programmierung, wenn ich jemals die Zeit dafür aufbringen könnte, es fertigzustellen. Grundsätzlich ist es die Idee, dass, wenn Verträge die einzigen Aspekte eines Klassenverhaltens ausdrücken, die uns interessieren, und wir Verträge bereits als Code ausdrücken, warum nicht nur die Klassen- und Methodendefinitionen zusammen mit den Verträgen vorliegen. Auf diese Weise wären die Verträge der Code, und wir müssten nicht alle Methoden implementieren. Lassen Sie die Bibliothek herausfinden, wie Sie die Verträge für uns einhalten können.