Abstraktion ist der Schlüssel zu einfachem Code

Bild


Gibt es eine Möglichkeit, deine Fähigkeiten zehnmal zu verbessern? Gibt es ein magisches Geheimnis, das Ihnen - wenn Sie das nur wüssten - eine ganz neue Welt der Leistungsfähigkeit und Produktivität in der Softwareentwicklung eröffnen würde?



Hier denken die Zweifler: „Hier kann man keine Abstriche machen! Jeder muss üben, um gut zu werden! " Das stimmt, aber was üben Experten, um die Softwareentwicklung zu beschleunigen, und gibt es eine wichtige Sache, die einen großen Unterschied machen kann?



Ja! Es gibt!



Aber selbst wenn ich es mit Ihnen teile - selbst wenn ich es detailliert für Sie darlege - kann es 10 Jahre dauern, bis Sie wachsen und seine Einfachheit voll und ganz schätzen.



Zumindest ist mir das passiert. Dies wurde mir von meinem Programmierlehrer in einfachem Englisch präsentiert. Ich ging Schritt für Schritt durch den Prozess der Anwendung anhand einiger Codebeispiele. Und das geschah wirklich nur 10 Jahre später. Aber jetzt, dank meiner Erfahrung, schätze ich diese Lektion sehr und obwohl ich weiß, dass Sie sie auf den ersten Blick nicht wirklich schätzen können, werde ich sie mit Ihnen teilen.



Dieses Geheimnis ist der Hauptunterschied zwischen durchschnittlicher Leistung und 10-facher Leistung. Indem Sie dieses Geheimnis nutzen, können Sie um Größenordnungen effektiver sein.



Sie können Code schreiben, der wiederverwendbarer ist und weniger wahrscheinlich beschädigt wird, wenn neue Anforderungen eingeführt werden und Änderungen im Code auftreten.



Das Geheimnis, zehnmal produktiver zu sein, besteht darin, die Abstraktion zu beherrschen. Viele Entwickler betrachten „Abstraktion“ als Schimpfwort. Möglicherweise hören Sie Ratschläge wie „Nicht zu früh abstrahieren“ oder Zen Pythons berühmtes „explizit ist besser als implizit“, was bedeutet, dass das Konkrete besser ist als das Abstrakte. Dies ist alles ein guter Rat, je nach Kontext.



Moderne Anwendungen verwenden jedoch eine große Menge an Code. Wenn Sie den Quellcode für die Top 10 der modernen Apps drucken, konkurrieren diese Papierstapel mit der Höhe der Wolkenkratzer, und die Softwarewartung kostet viel Geld. Je mehr Code Sie erstellen, desto mehr kostet es.



Abstraktion ist der Schlüssel zu einfachem Code



Die richtigen Abstraktionen können Ihren Code lesbarer, anpassungsfähiger und wartbarer machen, indem sie Details ausblenden, die für den aktuellen Kontext nicht wichtig sind, und die Menge an Code reduzieren, die für dieselbe Aufgabe erforderlich ist - häufig um ein Vielfaches.



"Einfachheit subtrahiert das Offensichtliche und fügt das Sinnvolle hinzu."

- John Maeda: Die Gesetze der Einfachheit


Abstraktion ist keine Einbahnstraße. Es besteht aus zwei zusätzlichen Konzepten:



  • Verallgemeinerung - Entfernen doppelter Teile (offensichtlich) und Verstecken hinter einer Abstraktion.
  • Spezialisierung - Verwendung der Abstraktion für einen bestimmten Anwendungsfall, wobei nur das hinzugefügt wird, was anders sein sollte (sinnvoll).


Betrachten Sie den folgenden Code:



const doubleList = list => {
  const newList = [];
  for (var i = 0; i < list.length; i++) {
    newList[i] = list[i] * 2;
  }
  return newList;
};


An dem Code ist nichts auszusetzen, aber er enthält viele Details, die für diese bestimmte Anwendung möglicherweise nicht wichtig sind.



  • Es enthält detaillierte Informationen zur verwendeten Containerdatenstruktur (Array), was bedeutet, dass es nur mit Arrays funktioniert. Es enthält die Abhängigkeit der Zustandsform .
  • Es enthält eine Iterationslogik. Wenn Sie also andere Operationen benötigen, die auch jedes Element in der Datenstruktur besuchen müssen, müssen Sie auch eine sehr ähnliche Iterationslogik in diesem Code wiederholen. Dies führt zu Wiederholungen , die gegen das DRY- Prinzip verstoßen können (wiederholen Sie sich nicht) .
  • Es enthält eine explizite Zuweisung und keine deklarative Beschreibung der ausgeführten Operation. Es ist ausführlich .


Nichts davon wird benötigt. All dies kann hinter der Abstraktion verborgen sein. In diesem Fall eine solche universelle Abstraktion, die die Art und Weise, wie wir moderne Anwendungen erstellen, verändert und die Anzahl der expliziten for-Schleifen reduziert hat, die wir schreiben müssen.



"Wenn du eine Sache mit tiefem Bewusstsein berührst, berührst du alles."

- Thih Nhat Hanh


Mit der Kartenoperation können wir den Code auf einen Einzeiler verkürzen, das Offensichtliche entfernen (die Teile, die wir wahrscheinlich in ähnlichem Code wiederholen werden) und uns auf das Sinnvolle konzentrieren (genau das, was für unsere Verwendung anders sein sollte). Beispiel:



const doubleList = list => list.map(x => x * 2);


Junior-Entwickler denken, dass sie viel Code schreiben müssen, um mehr Wert zu erzielen.



Ältere Entwickler verstehen den Wert von Code, den niemand schreiben musste.



Stellen Sie sich einen Programmierer vor, der die Verwendung der Kartenoperation in Programmiersprachen wie JavaScript populär gemacht hat. Eine Zuordnung wird von Details wie dem Datentyp, den Sie zuordnen, dem Typ der Datenstruktur, die die Daten enthält, und der Iterationslogik, die zum Auflisten jedes Datenknotens in der Datenstruktur erforderlich ist, abstrahiert. Dies hat die Leistung jeder Anwendung erhöht, die ich in den letzten zehn Jahren erstellt habe.



Jeremy Ashkenasmachte einige dieser Operationen in JavaScript populär und ebnete den Weg für viele großartige Syntaxverknüpfungen, die wir jetzt in JavaScript für selbstverständlich halten, indem wir sie zuerst in CoffeeScript verwenden. Er schuf Underscore, aus dem Lodash (immer noch das beliebteste funktionale Programmierwerkzeug in JavaScript) und Backbone hervorgingen, das die MVC-Architektur in JavaScript populär machte und den Grundstein für Angular and React legte.



John Rezigmachte jQuery so beliebt und einflussreich, dass es die größte Sammlung neu eingekapselter JavaScript-Module (jQuery-Plugins) bildete, bis nach einigen Jahren Standard-Node-Module und ES6-Module erschienen. Die jQuery-Selektor-API war so leistungsfähig, dass sie zur Grundlage der modernen DOM-API wurde. Ich profitiere fast täglich von dieser API, wenn ich React-Komponenten teste .



Die richtigen Abstraktionen sind leistungsstarke Hebel, die einen großen Leistungsunterschied bewirken können. Abstraktion ist kein missbräuchliches Wort. Module, Funktionen, Variablen und Klassen sind alle Formen der Abstraktion, und der ganze Grund, warum sie existieren, besteht darin, die Abstraktion zu vereinfachen und Abstraktionen zu erstellen.



Sie können keine komplexen Programme ohne Abstraktionen schreiben. Sogar die Assemblersprache verwendet Abstraktionen - Namen für Anweisungen, Variablen für Speicheradressen, Codepunkte für das Springen zu Unterprogrammen (z. B. Funktionsaufrufe usw.). Moderne Software ist eine Ebene nützlicher Abstraktionen, und diese Ebenen bieten Ihnen den Vorteil.



"Gib mir einen Hebel lange genug und einen Drehpunkt, auf den ich mich stützen kann, und ich werde die ganze Welt bewegen."

- Archimedes


Der Schlüssel zur Einfachheit: Das Geheimnis, nach dem wir suchen, ist, wie wir die Menge an Code reduzieren können, die wir erstellen - wie man mit viel weniger viel mehr macht. Wenn Sie dies beherrschen, werden Sie zehnmal besser zum Programmierer. Ich garantiere es.





Bild



Erfahren Sie, wie Sie einen begehrten Beruf von Grund auf neu erlernen oder Ihre Fähigkeiten und Ihr Gehalt verbessern können, indem Sie bezahlte Online-Kurse von SkillFactory absolvieren:






Weiterlesen






All Articles