Code Refactoring - Wie man besseren Code schreibt

In der Programmierwelt gibt es einfach so viel zu lernen.

Nach 3 Jahren Front-End-Webentwicklung fühle ich mich beim Codieren so schlecht wie nie zuvor. In der Programmierwelt gibt es einfach so viel zu lernen, dass ein Entwickler, der bescheiden genug ist, es niemals wagen würde, zu behaupten, sein Code sei perfekt.

Ich habe die meiste Zeit meiner Karriere meine CSS-Kenntnisse aufgefrischt, und deshalb habe ich aus guten Gründen kein Vertrauen in meine JavaScript-Kenntnisse. Als positiver Mensch, der ständig nach Wachstum strebt, habe ich dieses Gefühl der Unzulänglichkeit in Motivation verwandelt, anstatt mich selbst zu verabscheuen.

Unten finden Sie einen Code-Test, den mein älterer Kollege für den Einstellungsprozess ausgearbeitet hat. Er teilte dies mit anderen Teammitgliedern, damit wir Rückmeldungen zur Effizienz der Verwendung dieses Codetests geben können, um die Programmierfähigkeiten der Kandidaten zu bestimmen. Ich nutzte diese Gelegenheit, um meine JavaScript-Kenntnisse zu verbessern, indem ich den ganzen Tag über den Code nachdachte.

Die Frage

Schreiben Sie eine Funktion, die bei Angabe einer Versionsnummer Zeichenfolge, dh. "1.12.4" und eine Semver-Range-Zeichenfolge, dh. "~ 1.12.0" gibt als Booleschen Wert zurück, ob die angegebene Version in den angegebenen Semverbereich fällt.
Der Semver-Bereich sollte die drei folgenden Muster unterstützen:
 1) Genaues Spiel
 2) ^ Versionen größer im selben Hauptversionsbereich
3) ~ Versionen größer im selben Unterversionsbereich

Erster Versuch

Im ersten Versuch habe ich mich für den einfachsten Weg entschieden, die Aufgabe zu erledigen, indem ich .substring (), switch case, for-Schleifen und if-Bedingungen verwendet habe. Obwohl der Code hässlich aussieht, funktioniert er und es ist sehr einfach, diese Lösung zu beenden, da all dies die Grundlagen in JavaScript sind. Meine Gewohnheit beim Codieren ist es, es zuerst zum Laufen zu bringen, dann umzugestalten, bis ich zufrieden bin, und es schließlich als erledigt zu betrachten. Es ist wahrscheinlich nicht der beste Weg für die meisten Menschen, aber ich bin es gewohnt, auf diese Weise zu arbeiten. (In Zukunft würde ich gerne meine Arbeitsweise ändern und mehr Zeit mit dem Nachdenken verbringen, bevor ich mit dem Programmieren beginne.)

Zweiter Versuch

Ich kenne den Schaltergehäuseteil und die if-Bedingungen sind sehr hässlich, deshalb habe ich versucht, sie umzuschreiben. Ich wollte eine Funktion finden, die wie .forEach () über das Array in shouldMatch eine Schleife durchlaufen kann, aber eine, die ich unterbrechen kann, wenn result === true, also habe ich gegoogelt und .some () gefunden, was genau das ist, was ich wollte. Ich schämte mich ziemlich, dass ich mich nicht an diese Funktion erinnerte, aber ich habe mir selbst vergeben. Schließlich gibt es Funktionen, die wir nicht oft verwenden, und es ist natürlich, sie zu vergessen. Meine Einstellung ist: Benutze sie mehr, wenn du sie nützlich findest, und irgendwann wirst du dich an sie erinnern.

Dritter Versuch

Ich teilte dem leitenden Ingenieur den Code mit und er gab mir konstruktives Feedback. Er bat mich, mir einen besseren Weg zu überlegen, um rangeSymbol zu erhalten, und zu versuchen, rangeNumArr nach der Deklaration nicht zu ändern. Zu guter Letzt sagte er mir, ich solle .every () verwenden, was .some () ziemlich ähnlich ist, aber stattdessen würde die Schleife abbrechen, wenn der Rückgabewert falsch ist. Ich nahm seinen Rat an und nahm einige weitere Änderungen vor. Das Ergebnis war ein wunderschöner Code:

Fazit

Es ist sehr wichtig zuzugeben, dass Sie in etwas nicht gut sind, und Verbesserungen anzustreben.

Bitten Sie um Hilfe, wenn Sie sie brauchen. Es ist immer gut, eine andere Perspektive zu haben, weil jeder einen anderen Denkprozess hat. Manchmal können die Meinungen anderer Sie inspirieren!

Befürchten Sie nicht, dass Sie beim Programmieren Zeit mit einer einfachen Funktion verschwenden. Denken Sie daran, dass das Programmieren ein kreativer Prozess ist, der bei richtiger Ausführung einiges an Gehirnleistung verbraucht!

Beifall und folge mir, wenn dir dieser Artikel gefällt!

Ich würde meine Front-End-Experimente und meine Gedanken zur Programmierung teilen, wann immer ich Zeit habe;)