I'm a coder - Zukunftsorientiert entwickeln
Die erste I’m a Coder News in diesem Jahr steht an. Thema ist dieses Mal zukunftsorientierte und abstrahierte Programmierung. Ich komme auf das Thema, weil ich zum einen in meinem eigenen Code, wie auch hin und wieder auf der Arbeit, über Dinge stolpere die optimierter sein könnten. Dabei geht es nicht darum eine foreach Schleife statt einer for Schleife zu nutzen. Es geht darum Dinge so zu entwickeln, dass man sie wiederverwenden kann und Code-Duplizierung vermeidet.
Ein Beispiel ist eine Klasse die etwas umschließt und sortierbar macht, unter Android z.B. ein sortierbarer FragmentPagerAdapter open_in_new. Hin und wieder möchte man durch diverse Fragments navigieren und diese aktualisieren, wobei sich die Sortierung ändern kann. Was die konkreten Fragmente beinhalten und woran man die Identifikation dieser fest macht, ist logischerweise abhängig von der Implementierung. Nun kann man entsprechend Typen, Objekte und ähnliches dort hart hineinschreiben und alles funktioniert. Doch was passiert wenn man die Klasse erneut verwenden will? Möglich wäre es natürlich eine weitere Klasse zu erzeugen und den Code erneut, bloß minimal angepasst, zu implementieren. Doch eine wesentlich effektiver Alternative wären hier Generics open_in_new und zwei extrem simple Implementierungen. Somit minimiert man die Fehlerquellen, erhöht die Testbarkeit und ermöglicht bei der folgenden Entwicklung eine einfache Wiederverwendbarkeit. Auch Basisklassen, die die Kernimplementierungen Kapseln, sind ein praktischer Weg, um doppelten Code zu vermeiden. Statische Helper Klassen und Methoden sind unter bestimmten Umständen, z.B. bei Datumstransformationen, auch ein gutes Mittel zum Zweck. Alles in allem gibt es diverse Ansätze, welche natürlich auch stark von der Sprache und dem Projekt abhängen. Doch allgemein lässt sich sagen, dass in dem Moment wo man das Gefühl hat etwas doppelte zu schreiben, es meistens Sinn macht die erste Implementierung zu abstrahieren. Danach folgen zwei kurze konkrete Implementierungen und schon minimiert man den Wartungsaufwand. Ebenfalls bedenken sollte man hier, dass die erste Umsetzung vermutlich bereits getestet ist und funktioniert, somit baut man hoffentlich auf solide Mauern. Interessant ist meiner Erfahrung nach übrigens auch, dass die Zeit einen solchen abstrahierten Ansatz zu schreiben meist nur geringfügig höher ist als bei bloßem Copy and Paste.