Ich habe darüber nachgedacht, ein Java-Framework zu erstellen, mit dem Programmierer Invarianten (Pre- und Post-Conditions) an Schnittstellen angeben können. Der Zweck wäre, Code robuster zu machen und die Anzahl der Komponententests zu reduzieren, die für verschiedene Implementierungen derselben Schnittstelle geschrieben werden müssten.Hinzufügen von Invarianten zu Interfaces in Java
Ich stelle mir vor, eine Methode zur Annotation von Methoden mit Invarianten zu erstellen, die der Programmierer ebenfalls schreiben würde. Z.B.
würde mit einer Anmerkung versehen, um sicherzustellen, dass alle Implementierungen eine sortierte Liste zurückgeben. Diese Anmerkung wäre mit einem Komponententest verknüpft, der zur Kompilierungszeit für jede Implementierung ausgeführt werden könnte.
Ist das eine verrückte Idee oder wäre das für die weitere Programmiergemeinschaft nützlich?
Ich bin mir nicht sicher, ob die Verknüpfung mit Unit-Test eine gute Bewegung während der Kompilierzeit ist. Weil _der Test bestanden hat, ist nur etwas, wenn Sie wissen, was ich meine. Mit einem Aspekt Weber kann ein besserer Ansatz sein, nicht? (Dann ist die nächste Frage - Leistung) – yclian
@yclian, Ich denke, die Idee war, diese Vor- und Nachbedingungen zu verwenden, um verschiedene statische Analysen durchzuführen, um die Anzahl der Komponententests zu reduzieren, die in der Reihenfolge geschrieben werden müssten um eine gleichwertige Abdeckung zu erhalten. Ich sah keine Implikation, dass dies notwendigerweise eine Laufzeit-Sache sein würde (obwohl vielleicht einige Laufzeit-Behauptungen verwendet werden könnten, um Aussagen zu schützen, dass statische Analyse nicht sicher sein könnte). – Gian