Beste Antwort
Interessante Frage. Für mich bedeutet der Begriff „Handwerkskunst“ eher etwas über die Art und Weise, wie der eigentliche Code geschrieben wird, als über das übergeordnete Systemdesign. Ich würde sagen, dass gut gestalteter Code Folgendes bewirkt:
- Befolgen Sie externe Standards
- Befolgen Sie interne Standards
- Verwendet gute Muster
- Ist lesbar
Befolgen Sie externe Standards. Wenn Ihre Gruppe Codierungsstandards hat, befolgen Sie diese. Wenn Sie nicht “ Befolgen Sie die Standards nicht.
Befolgen Sie die internen Standards. Dies bedeutet, dass der Code intern konsistent sein sollte. Methoden, die ähnliche Dinge tun, sollten auf die gleiche Weise ausgelegt werden. Wenn eine Methode dem Muster folgt:
if (success) {
doSomething();
} else {
handleError();
}
hat keine andere Methode, die beginnt:
if (!success)
{
handleError();
Verwendet gute Muster. Damit meine ich eher Codierungsmuster als Entwurfsmuster. Ihr Code sollte für die Sprache geeignete Redewendungen verwenden. (Verwenden Sie beispielsweise scoped\_ptrs für die Speicherverwaltung in C ++.) Es sollte offensichtliche Ineffizienzen wie das Nachinkrementieren von C ++ – Iteratoren oder das Erstellen vermeiden Objekte, die nicht in jedem Codepfad verwendet werden.
Ist lesbar. Andere Ingenieure lesen Ihren Code und Sie lesen ihn erneut es in einem Jahr. Der Code sollte so einfach wie möglich zu verstehen sein. Alle oben genannten Punkte befassen sich hauptsächlich mit der Lesbarkeit und der Minimierung unerwarteter Elemente im Code. Ihre Leser sollten sich mit der Logik Ihres Codes befassen und nicht versuchen, herauszufinden, warum ein nicht standardmäßiges Konstrukt verwendet wurde. Wenn es ein nicht standardmäßiges Konstrukt gibt, sollten Ihre Leser wissen, dass es aus einem bestimmten Grund vorhanden ist. nicht weil du einen Fehler gemacht hast. (Stellen Sie sich Ihren Code wie ein Möbelstück vor. Die Oberfläche sollte glatt sein und Sie sollten keinen Splitter fangen, wenn Sie mit der Hand darüber fahren. Unregelmäßigkeiten sollten aus einem bestimmten Grund vorhanden sein.)
Die Lesbarkeit wird auch durch sinnvolle Methoden- und Variablennamen sowie durch entsprechende Kommentare verbessert. Gehen Sie beim Kommentieren nicht über Bord. Wenn es offensichtlich ist, machen Sie sich nicht die Mühe, es zu erklären. Aber haben Sie eine Art Überblick, damit der Leser den Kontext kennt. (Es mag offensichtlich sein, dass der Code Eingabe X in Ausgabe Y umwandelt, aber es hilft, wenn der Leser eine Vorstellung davon hat, warum dies erforderlich ist.)
Antwort
Manager sind wie Kleinkinder. Sie wollen, was sie wollen und sie wollen es JETZT ! Im Gegensatz zu Kleinkindern haben sich Manager jedoch halb an Harvard Business Review -Artikel erinnert, die sie zitieren (ohne Referenzen anzugeben), um ihre Forderungen zu rechtfertigen. Sie haben eine Reihe von Argumenten gelernt, die einige Entwickler überraschen.
Sie sagen: „Wir können es uns nicht leisten, es richtig zu machen. Wir müssen es auf den Markt bringen JETZT ! ”. Es ist nicht wahr, weißt du? Wenn sie ihren Spaghetti-Code in die Produktion bringen, haben sie jetzt die Möglichkeit, ihre Startkunden zu verärgern, aber der Code kann nicht skaliert werden. Es bedeutet nur, dass ihr Geschäft eine Weile durcheinander gerät, bevor es zusammenbricht.
Sie sagen: „Wir werden eine Beta für unsere Startkunden veröffentlichen.“ Sie wollen, dass Sie den perfekten, kundenfreundlichen Code früher als sonst veröffentlichen, nur weil sie sich bereit erklärt haben, ihn als Beta-Testprogramm zu bezeichnen. Es ist magisches Denken, wie an den Weihnachtsmann zu glauben.
Sie sagen: „Ich verspreche, wir werden den Code später neu schreiben, wenn Sie Ihren beschissenen, halbfertigen Code veröffentlichen JETZT ! ” Klingt das nicht nach „Ich werde mein Zimmer später putzen, Papa, wenn ich fernsehen und zuckerhaltige Snacks essen kann JETZT ?“ Das Problem ist, dass später nie kommt. Jeden Tag hat der Manager die Wahl, entweder neue Funktionen hinzuzufügen oder den unordentlichen Raum aufzuräumen, der seine Codebasis darstellt. Ratet mal, welchen sie Priorität einräumen. Und raten Sie mal, der Raum wird immer unordentlicher, so dass das Aufräumen immer länger dauert. Es ist auch schwieriger, daran zu arbeiten (neue Funktionen zu erstellen), weil es so chaotisch ist.
Schließlich sagen sie: „Wir haben zu viel in diese Codebasis investiert. Das Umschreiben dauert zu lange. Wir brauchen Funktionen JETZT ! “ Nur jede Funktion benötigt zwei- oder dreimal so lange zum Codieren, da Softwareentwickler technische Probleme haben.
Gute Entwickler, wie geduldige und liebevolle Eltern, müssen den Wahnsinn stoppen. Sie müssen fest darauf bestehen: „Tut mir leid, Liebling, aber in Ihrem Artikel HBR heißt es:“ Umsatz früher ist besser, Alle anderen Dinge sind gleich . «Sie müssen es genauer lesen.Alle anderen Dinge sind nicht gleich, wenn Sie technische Schulden machen. Wie wäre es, wenn wir Funktionen priorisieren und es vielleicht etwas gibt, das Sie früher verkaufen können. “
Sie müssen der Erwachsene sein und ihnen sagen, dass es keinen Weihnachtsmann gibt, und nein So etwas wie perfekter, kundenfreundlicher Code, bis alle Fehler beseitigt und alle Funktionen implementiert sind.
Sie müssen ihnen sagen: „Wir können uns nicht , um bewährte Verfahren anzuwenden. Wir leben oder wir sterben, aber wir müssen bestimmte Dinge tun, um zu leben, wie das Schreiben von Tests und Dokumentationen. Dies ist keine Option. „
Sie müssen lächeln und sagen:“ Wir werden diesen Code niemals neu schreiben. Ich weiß, dass Sie es gut meinen, aber wenn es darum geht, den Code zu reparieren oder neue Funktionen hinzuzufügen, weiß ich, was Sie sagen werden. Das sagen Sie immer . “
Als fester Elternteil helfen Sie Ihrem Manager, sich zu einem Unternehmensleiter zu entwickeln würde arbeiten wollen für.