JavaScript:
Refactoring

Wie geht das:

Schauen wir uns ein einfaches Beispiel an, bei dem Refactoring Ihren Code konziser und lesbarer machen kann. Hier refaktorisieren wir eine Funktion, die die Summe eines Arrays von Zahlen berechnet.

Vorher:

function calculateSum(arr) {
  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    sum += arr[i];
  }
  return sum;
}

console.log(calculateSum([1, 2, 3, 4])); // Ausgabe: 10

Nachher:

function calculateSum(arr) {
  return arr.reduce((sum, num) => sum + num, 0);
}

console.log(calculateSum([1, 2, 3, 4])); // Ausgabe: 10

Sehen Sie, wie die reduce Methode die Größe der Funktion reduziert, während die Funktionalität intakt bleibt? Das ist Refactoring für Sie.

Tiefer Eintauchen

Refactoring wurde als formale Praxis erst mit der Veröffentlichung von Martin Fowlers Buch “Refactoring: Verbesserung des Designs bestehender Code” im Jahr 1999 etabliert. Dieses Buch, zusammen mit dem Aufkommen agiler Softwareentwicklung, half dabei, Refactoring in den Mainstream zu bringen.

Refactoring als einen Aspekt der Softwareentwicklung zu beschreiben, ist wie zu erklären, warum man eine Werkstatt aufräumen würde: man macht es, damit man das nächste Mal, wenn man etwas reparieren muss (in diesem Fall Code), weniger Zeit mit dem Durcheinander verbringt und mehr mit dem eigentlichen Problem.

Wenn wir über Alternativen zum Refactoring sprechen, betreten wir eine breitere Diskussion über Strategien zur Softwarewartung. Man könnte sich zum Beispiel für eine komplette Neuschreibung entscheiden, aber das ist oft kostspieliger und riskanter. Führen Sie Refactoring schrittweise durch, und Sie ernten laufende Vorteile, ohne das Schiff durch eine plötzliche Generalüberholung zu versenken.

Die Entwicklung von integrierten Entwicklungsumgebungen (IDEs) und Tools wie JSHint, ESLint und Prettier im JavaScript-Ökosystem, die automatische Qualitätsprüfungen des Codes durchführen und Möglichkeiten für Refactoring hervorheben, hat das Refactoring unterstützt.

Es geht alles um sauberen, ausdrucksstarken und wartbaren Code. Komplexe Algorithmen, Optimierungen der Datenstruktur oder sogar architektonische Änderungen, wie der Wechsel von prozeduralen zu funktionalen Programmierstilen, könnten Teil eines Refactorings sein.

Refactoring muss sorgfältig durchgeführt werden; es ist wesentlich, einen robusten Satz von Tests zu haben, um sicherzustellen, dass Ihre Änderungen das Verhalten der Software nicht unerwartet geändert haben – ein weiterer Grund, warum sich Test-Driven Development (TDD) gut mit Refactoring verbindet, da es standardmäßig dieses Sicherheitsnetz bietet.

Siehe auch