(und wie man Lösungen erstellt, die auch nach Updates weiterhin funktionieren)
„Apps dürfen nur öffentliche APIs verwenden und müssen auf dem aktuell ausgelieferten Betriebssystem ausgeführt werden.“ Richtlinien zur Überprüfung von Apple-Apps
Wenn Sie jemals angefangen haben, mit einem neuen Framework zu arbeiten, und sich dabei ertappt haben, dass Sie denken: „Jetzt verstehe ich alles selbst, das Lesen der Dokumentation ist zu lang“, dann sind Sie definitiv nicht allein. Viele von uns haben einen natürlichen Forscherinstinkt: Erst ausprobieren und erst dann die Anleitung anschauen. Und das ist völlig normal.
In diesem Stadium kann es jedoch leicht passieren, dass man sich übertreibt und in eine Situation gerät, in der der Code zwar gut funktioniert, sich aber möglicherweise auf nicht offensichtliche Funktionen des Systems verlässt.
Warum reicht es manchmal nicht aus, es einfach „selbst herauszufinden“?
Frameworks, insbesondere geschlossene, sind komplexe und vielschichtige Systeme. Sie verbergen oft interne Logik und Optimierungen, die:
* sind nicht in der öffentlichen Dokumentation beschrieben;
* garantieren nicht, dass das Verhalten auch in Zukunft beibehalten wird;
* kann sich mit der Veröffentlichung neuer Versionen ändern;
* kann den Entwicklern bekannte Funktionen enthalten, die noch nicht behoben wurden.
Wenn wir intuitiv handeln, besteht die Gefahr, dass Architektur auf zufälligen Beobachtungen und nicht auf dokumentierten Regeln basiert. Dadurch kann der Code empfindlicher auf Aktualisierungen reagieren.
Dokumentation ist keine Einschränkung, sondern eine verlässliche Unterstützung
Framework-Entwickler erstellen Handbücher, um uns zu helfen. Wenn wir innerhalb der Dokumentation handeln, erhalten wir:
* Stabilität;
* Unterstützung;
* vorhersehbares Systemverhalten.
Wenn wir über diese Grenzen hinausgehen, gehen wir zusätzliche Risiken ein und die Pflege dieses Codes wird schwieriger.
Experimente? Sicherlich. Aber mit einem Verständnis für Grenzen.
Neugier ist eine großartige Eigenschaft eines Entwicklers. Das Erkunden und Ausprobieren neuer Dinge ist absolut unerlässlich. Aber hier ist ein kleiner Wunsch:
Die bequemste Art zu experimentieren besteht darin, sich auf Best Practices zu verlassen.
Bei der Dokumentation handelt es sich um eine Karte, die zeigt, welche Pfade am sichersten sind und von den Erstellern unterstützt werden.
Eine Außenperspektive: Expertenrat
Wir lernen oft von erfahrenen Kollegen:
* sie führen nützliche Kurse durch,
* auf Konferenzen sprechen,
* wunderbare Bücher und Blogs schreiben,
* ihre einzigartige Vision teilen.
Viele von ihnen teilen wirklich wertvolle Erfahrungen. Aber es sei daran erinnert: Wenn die Ansätze des Autors im Widerspruch zur offiziellen Dokumentation stehen, können sie sich als fragil erweisen.
Solche „empirischen Muster“ manchmal:
* nur mit einer bestimmten Version des Frameworks arbeiten;
* empfindlich gegenüber Updates;
* kann sich in ungewöhnlichen Situationen unvorhersehbar verhalten.
Von der Community zu lernen ist großartig und lohnend. Aber jeder Rat, selbst der maßgeblichste, sollte immer sorgfältig anhand offizieller Handbücher überprüft werden.
Ein wenig über SOLID
Drei Ideen aus den SOLID-Prinzipien ergänzen diesen Ansatz perfekt:
* Offenes/geschlossenes Prinzip: Versuchen Sie, das Verhalten über öffentliche APIs zu erweitern und verlassen Sie sich nach Möglichkeit nicht auf eine versteckte Implementierung.
* Liskov-Substitutionsprinzip: Verlassen Sie sich auf den Vertrag, nicht auf die konkrete Umsetzung. Andernfalls können Änderungen unter der Haube zu unerwarteten Schwierigkeiten führen.
* Abhängigkeitsumkehr: Erstellen Sie Abhängigkeiten auf Abstraktionen, nicht auf Details.
In der Praxis bedeutet dies, dass die Bindung an interne, nicht dokumentierte Details des Frameworks das System spröde macht.
Basierend auf öffentlichen Schnittstellen und Verträgen erhalten wir:
* bessere Isolierung des Codes von Änderungen im Framework;
* einfache Prüfung;
* Vorhersehbarkeit und Zuverlässigkeit der Architektur.
Was passiert, wenn ein Fehler vorliegt?
Es kommt auch vor, dass alles nach den Regeln gemacht wird, das Ergebnis aber nicht den Erwartungen entspricht. Rahmenbedingungen entwickeln sich weiter und sind nicht immer perfekt. In solchen Fällen:
* Erstellen Sie ein Minimalbeispiel, das das Problem reproduziert.
* Stellen Sie sicher, dass nur dokumentierte APIs verwendet werden.
* Senden Sie einen Fehlerbericht – das Entwicklungsteam wird Ihre Arbeit sicherlich zu schätzen wissen und versuchen zu helfen.
Wenn das Beispiel auf Workarounds setzt, wird es für Entwickler deutlich schwieriger, Support zu leisten.
So holen Sie das Beste aus dem Framework heraus
*Siehe Dokumentation.
* Befolgen Sie die Anleitungen und Empfehlungen der Autoren.
* Experimentieren Sie innerhalb der beschriebenen Funktionalität.
* Überprüfen Sie die Ratschläge im Internet mit offiziellen Quellen.
* Lokalisieren Sie Fehler unter Einhaltung der Rahmenverträge.
Schlussfolgerung
Frameworks sind mächtige Werkzeuge mit eigenen Spielregeln. Wenn wir sie vergessen, besteht die Gefahr, dass unser Code übermäßig anfällig wird. Aber wir alle möchten, dass die erstellten Produkte lange leben und nicht nach jedem kleinen Update dringende Korrekturen erfordern.
Handbücher und Dokumentationen sind eine hervorragende Unterstützung, die dabei hilft, wirklich zuverlässige Lösungen zu schaffen.
Quellen
https://developer.apple.com/app-store/review/guidelines/
https://en.wikipedia.org/wiki/SOLID
https://en.wikipedia.org/wiki/API
https://en.wikipedia.org/wiki/RTFM