Jeder, der etwas entwickelt, weiß, dass Code ein lebendes Ding ist. Wie geht man also bei der Definition einer "vollständigen" Schnittstelle vor, wenn erhebliche Funktionalität möglicherweise vor der Veröffentlichung der Schnittstelle nicht erkannt wurde?Wie definierst du eine Schnittstelle, wissend, dass sie einmal veröffentlicht werden sollte?
Antwort
Machen Sie einfach die beste vernünftige Vermutung der Zukunft, und wenn Sie mehr brauchen, erstellen Sie eine zweite Version Ihrer Schnittstelle.
Testen Sie es sehr. Ich habe noch nie ein Allheilmittel für dieses spezielle Problem gefunden - es gibt verschiedene Strategien, die von den speziellen Bedürfnissen der Konsumenten und den Zielen des Projekts abhängen - zum Beispiel, ob Microsoft das ASP.NET MVC Framework liefert oder ein interne LoB-Anwendung? Aber bis zum einfachsten destilliert, können Sie nie falsch testen.
Durch Testen, meine ich die Verwendung der Schnittstelle, um Funktionalität zu implementieren. Sie testen den Vertrag, um festzustellen, ob er die Anforderungen erfüllen kann. Stellen Sie sich so viele verschiedene Anwendungsmöglichkeiten für die Schnittstelle vor, wie Sie sich vorstellen können, und implementieren Sie sie so weit wie möglich. Whiteboard den Rest, und es sollte klar werden, was fehlt. Ich würde für ein gegebenes "fehlendes Mitglied" sagen, wenn Sie es nicht innerhalb von 3-5 Iterationen treffen, werden Sie es wahrscheinlich nicht brauchen.
Sie können es nicht in einem One-Shot-Release tun. Sie brauchen Feedback.
Was Sie tun können, ist zuerst eine saubere Schnittstelle zu schaffen, die alle Funktionalitäten zur Verfügung stellt, die Ihre Bibliothek bieten sollte; stellen Sie es dann Ihrer Benutzerbasis für die reale Verwendung zur Verfügung; Verwenden Sie dann die Feedbacks als Leitfaden, um Ihre Benutzeroberfläche zu aktualisieren, ohne dass Sie andere Funktionen als Hilfsfunktionen/-klassen hinzufügen, bis sie auf der Benutzeroberfläche stabil sind.
Sie können sich nicht nur auf Erfahrung/gute Praxis verlassen. Es hilft wirklich, aber es ist nie genug. Sie brauchen nur Feedback.
Stellen Sie sicher, dass die Schnittstelle oder die Schnittstellentechnologie (z. B. RPC, COM, CORBA usw.) über einen klar definierten Mechanismus für Upgrades und erweiterte Schnittstellen verfügt.
Zum Beispiel Microsoft hat häufig MyInterface, gefolgt von MyInterfaceEx, von MyInterfaceEx2 gefolgt, etc, etc.
Andere Systeme haben ein Mittel zur Abfrage und für verschiedene Versionen der Schnittstelle (siehe DirectX, für eine Person) zu verhandeln .
Versionsnummern.
Definieren Sie eine "vollständige Schnittstelle". Nenne es Version 1.0.
Behebung der Probleme. Nenne es Version 2.0.
Sie sind getrennt. Sie überlappen sich in der Funktionalität, aber sie sind getrennt.
Ja, Sie erhöhen die Anstrengung, beide zu unterstützen. Das heißt, bis Sie 1.0 ablehnen und - schließlich - die Unterstützung stoppen.
- 1. Wie definierst du eine Variable für mysqli_connect?
- 2. Wie definierst du eine Konstante in C?
- 3. Wie definierst du ein @interface in Scala?
- 4. Sollte eine Schnittstelle eine andere Schnittstelle erben
- 5. Wie definierst du ein PHP-Include als String?
- 6. Wie definierst du ein reduzierbares Hamburger-Menü in Bootstrap 3?
- 7. Warum sollte eine Schnittstelle eine andere Schnittstelle implementieren?
- 8. Warum sollte die Schnittstelle für eine Java-Klasse bevorzugt werden?
- 9. Wie werden programmbezogene Arbeiten veröffentlicht?
- 10. So verhindern Sie, dass eine Schnittstelle erweitert wird
- 11. Wie testen Sie eine Schnittstelle?
- 12. Wie plane ich, dass eine Aufgabe einmal ausgeführt wird?
- 13. Ruby Slim - Wie definierst du die Klasse eines Elements mit einem Helfer oder einer Variablen?
- 14. Wie verhindere du, dass Proguard Typparameter entfernt?
- 15. Java - Stellen Sie sicher, dass ein Objekt implementiert eine Schnittstelle
- 16. Schnittstelle sollte keine Eigenschaften haben?
- 17. Glaubst du, dass Videoinhalte in JavaScript codiert werden können?
- 18. Kann eine ASP.NET 5-Anwendung so veröffentlicht werden, dass DNX auf dem Zielcomputer nicht installiert ist?
- 19. Wie können dieselben Daten mehr als einmal auf einem externen Server veröffentlicht werden?
- 20. Wie kann sichergestellt werden, dass der Zuweisungsoperator für eine virtuelle Basisklasse nur einmal aufgerufen wird?
- 21. C# -Compiler erkennt nicht, dass eine Klasse eine Schnittstelle implementiert
- 22. So legen Sie Visual Studio so fest, dass PDF-Dateien automatisch veröffentlicht werden
- 23. Sollen Node.js-Apps in npm veröffentlicht werden?
- 24. Wem SOLLTE Djangos Admin-Schnittstelle nicht verwendet werden?
- 25. C#, C++/cli: Wie testen Sie eine Komponente, die nur einmal pro Prozess geladen werden kann
- 26. Wie machst du es so, dass du dich mit der Telefonnummer für die App anmelden kannst?
- 27. Django: wie man eine App veröffentlicht
- 28. Wie sage ich Java, dass eine Schnittstelle Comparable implementiert?
- 29. Finden Sie Methoden, die einmal verwendet werden
- 30. Warum sollten Junit-Testfälle (Methoden) veröffentlicht werden?
+1: Referenzimplementierung. –