Wie Sie Legacy-Code verhindern

Wie Sie Legacy-Code verhindern

In der dynamischen Welt der Softwareentwicklung stellt Legacy-Code oft eine große Herausforderung dar. Im Laufe der Zeit kann sich dieser Code ansammeln, da ständig Patches und Schnellkorrekturen angewendet werden, nur um das System betriebsbereit zu halten. Dieser Artikel erläutert dieses häufige Problem sowie Strategien zur Bewältigung, damit Ihr Code sauber, effizient und aktuell bleibt.

Was sind die Probleme von Legacy-Code?

Legacy-Code kann Entwicklern große Kopfschmerzen bereiten. Eine vererbte Codebasis bringt oft technische Lasten mit sich, die das Ergebnis von schnellen Korrekturen und Patches sind, die ursprünglich dazu gedacht waren, das System über Wasser zu halten. Mit der Zeit können diese Notlösungen dazu führen, dass es immer schwieriger wird, den Code zu verstehen, zu ändern oder zu aktualisieren, ohne dass es zu einer Flut neuer Bugs oder Systemfehler kommt. Legacy-Code kann den Fortschritt verlangsamen, die Einführung neuer Technologien erschweren und mehr Ressourcen verbrauchen, was zu Problemen bei der Entwicklungseffizienz und Produktivität führt.

Wie kann das Problem mit Legacy Code gelöst werden?

Eine effektive Strategie, um dieses Problem zu lösen, ist die Verwendung der strikten Typisierung in TypeScript. Diese Funktion aktiviert eine Vielzahl von Typüberprüfungsfunktionen, die die Genauigkeit des Programms verbessern.

TypeScript

If you enable the strictNullChecks option, and are treated as distinct types. Das heißt, wenn Sie versuchen, sie an einer Stelle zu verwenden, an der ein bestimmter Wert erwartet wird, wird ein Typfehler auftreten. Dieses einfache, aber leistungsstarke Tool kann Ihr System vor Laufzeitfehlern schützen, wenn Sie versuchen, auf undefinierte Felder zuzugreifen. In addition, the flag improves the accuracy of function parameter checking, making your codebase even more robust.

Aber seien Sie vorsichtig, die Aktivierung aller Strict-Modus-Optionen kann aufgrund möglicher Legacy-Fehler schwierig sein. Sie müssen diese Veränderung allerdings nicht in einem einzigen Schritt vollziehen, sondern können sie schrittweise umsetzen.

One way to do this is by using the package in combination with the library. runs TypeScript compiler () on specific files without disregarding . So können Sie Ihre Codebasis Schritt für Schritt verbessern.

Und so könnte das aussehen:

"lint-staged": {
  "*.{js,ts}": ["tsc-files --noEmit --noImplicitAny --strictNullChecks"],
}

In this example, TypeScript compiles without creating any output files, thanks to the ‚‚ flag. The ‚‚ and ‚‚ flags, which are disabled in the main file, come into play for code verification. Dieser Ansatz bringt mit sich, dass Sie nicht alle Fehler im Projekt auf einmal beheben müssen. Stattdessen müssen Sie nur die Fehler in den Dateien beheben, die sich vor dem Commit an Git geändert haben.

Als Nächstes betrachten wir zusätzliche Tools, die beim Umgang mit Legacy-Code helfen.

Lint

Beim Linting wird der Code auf Fehler und Stilinkonsistenzen untersucht. Es wird verwendet, um die Qualität und Wartbarkeit des Codes zu gewährleisten, indem potenzielle Fehler schnell erkannt und behoben werden und ein konsistenter Stil durchgesetzt wird. Linter hilft, Fehler frühzeitig im Entwicklungsprozess zu erkennen. Ihr Code wird dadurch leichter lesbar und verständlich, was eine reibungslosere Zusammenarbeit und effizientere Code-Reviews ermöglicht.

Linter is a great tool for linting. Wir empfehlen, es mit einer benutzerdefinierten Konfiguration zu verwenden, um die Vorteile voll auszuschöpfen. For example you can ask it to parse files according to main , or files with extending recommended rules ‚‚. Die Verwendung von benutzerdefinierten Konfigurationen wie diesen trägt dazu bei, dass Linter genau auf die Ziele Ihres Projekts abgestimmt ist.

Another aspect to consider is the use of the ‚ library. Das Linting eines gesamten Projekts kann zeitaufwändig sein und in manchen Fällen sind die Ergebnisse nicht unbedingt relevant. To avoid these annoyances, ‚‚ allows you to target only those files that are staged for commit. Auf diese Weise können Sie die Qualität Ihres Codes effizient aufrechterhalten und sich auf Änderungen konzentrieren, die bald Teil Ihrer Codebasis werden sollen.

Und so könnte das aussehen:

"lint-staged": {
  "*.{js,ts}": [
	"eslint --cache",
] }

In diesem Fall werden nur *.ts- und *.js-Dateien gelintet, da diese commitet wurden.

The ‚ library is also worth knowing about. Husky ermöglicht die Automatisierung von Aufgaben wie dem Linting von Commit-Nachrichten, der Ausführung von Tests und dem Linting von Code, wenn Sie einen Commit oder Push in Ihrem Repository vornehmen.

So führen Sie Husky aus (pre-commit.sh):

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx lint-staged
npm run validate

In diesem Fall führt der Befehl lint-staged das Linting aus, und bei jedem Git-Commit wird ein benutzerdefinierter npm-Befehl zur Validierung ausgelöst, der in der Konfigurationsdatei angegeben ist.

Prettier-Code

Another useful tool to keep in your back pocket is Prettier (https://prettier.io/). Prettier ist ein beliebter Code-Formatierer, der Ihren Code automatisch so formatieren kann, dass er einem einheitlichen Stil folgt. Prettier verfügt über mehrere Konfigurationsoptionen, mit denen Sie das Verhalten an die Bedürfnisse Ihres Projekts anpassen können. Sie können zum Beispiel die Zeilenlänge und den Einrückungsstil konfigurieren.

So können Sie Prettier verwenden:

"lint-staged": {
	"*.{js,ts,css}": "prettier --write"
}

In this instance, Prettier is applied to JavaScript, TypeScript, and CSS files within the „“ context. Jedes Mal, wenn Sie Änderungen an Ihrem Git-Repository vornehmen, formatiert Prettier die Staged-Dateien automatisch. Dadurch wird sichergestellt, dass der übermittelte Code Ihren vordefinierten stilistischen Regeln entspricht, was seine Konsistenz verbessert. The flag tells Prettier to not only identify formatting issues but also to overwrite the files with the recommended formatting changes.

Die Überprüfung erfolgt nur für bestimmte Kategorien von Dateien und bei jedem Commit an das Git-Repository. We use the option to rewrite corrected files.

Fazit

Der Umgang mit Legacy-Code erfordert einen strategischen und proaktiven Ansatz. Indem Sie TypeScripts strikte Typfunktion zusammen mit robusten Tools wie ESLint, Husky und Prettier nutzen, können Sie die Codequalität sicherstellen, die Anhäufung von Legacy-Code verhindern und eine wartbare, effiziente Codebasis fördern. Der Weg zu sauberem Code ist ein ständiger Prozess, aber mit den richtigen Tools und Techniken lohnt es sich, ihn zu beschreiten. Die Bereinigung Ihres Legacy-Codes kann zu einer deutlich verbesserten Codequalität und optimierten Softwareentwicklung führen.

Wie Sie Legacy-Code verhindern

Melden Sie sich
für unseren Newsletter an

Erhalten Sie die neuesten Branchentrends, exklusive Einblicke und Gcore-Updates
direkt in Ihren Posteingang.