Häufig zu vermeidende Programmierfehler

Menschen neigen von Natur aus dazu, Fehler zu machen. Viele für Entwickler spezifische Mängel können jedoch vermieden werden. Wenn ein Programmierer in der Lage ist, häufige Fehler zu beseitigen, die in diesem Artikel behandelt werden, kann er besseren und saubereren Code schreiben.



Die Beseitigung von Fehlern im Code kommt nicht nur denjenigen zugute, die sie beseitigen, sondern auch denjenigen Programmierern, die diesen Code lesen müssen. Folglich können wir sagen, dass diejenigen, die in einem Team arbeiten und sich bemühen, ihren Code zu verbessern, dies nicht nur für sich selbst tun, sondern auch für diejenigen, mit denen sie arbeiten.

Hier sind einige häufige Fehler, die ein Programmierer vermeiden sollte.

1. Zu viele Aktionen in der Funktion


Gemäß dem Grundsatz der alleinigen Verantwortung sollte eine Funktion nur für die Durchführung einer Operation verantwortlich sein. Und das sollte nur eine Operation sein. Ich habe zu viele Funktionen gesehen, die das Laden, Verarbeiten und Präsentieren bestimmter Daten ausführen. Es wird angenommen, dass die Implementierung solcher Aktionen am besten auf mehrere Funktionen verteilt ist. Eine Funktion lädt Daten, eine andere verarbeitet, die dritte ist für die Darstellung verantwortlich.

Der Grund für die Wichtigkeit von Schreibfunktionen, die sich auf die Lösung eines einzelnen Problems konzentrieren, ist, dass dieser Ansatz den Code zuverlässiger macht. Angenommen, im obigen Fall werden die Daten von einer bestimmten API geladen. Wenn sich diese API ändert, beispielsweise wenn eine neue Version veröffentlicht wird, ist es sehr wahrscheinlich, dass die gesamte Funktion nicht mehr funktioniert. Der Code, der die Daten lädt, lädt etwas Falsches. Dies wirkt sich auf die Verarbeitung und Darstellung der Daten aus. Um das Problem zu lösen, müssen Sie es zuerst finden, herausfinden, was fehlgeschlagen ist, und dann den Code einer großen Funktion bearbeiten. Wenn das Laden, Verarbeiten und Präsentieren von Daten in mehrere Funktionen unterteilt ist, ist es viel einfacher, solche Probleme zu lösen.

2. Das Projekt hat Code kommentiert


Jeder hat den Code gesehen, von dem große Fragmente, die zum Beispiel bestimmte Funktionen enthalten, auskommentiert sind. Niemand weiß jedoch, warum diese Fragmente immer noch nicht aus der Codebasis entfernt werden. Und niemand weiß, ob diese Codeteile funktionieren, wenn sie nicht kommentiert werden. Gleichzeitig werden sie aber nicht entfernt. Und Sie müssen sie löschen. Der Grund, warum dieser Code Projekte verschmutzt, ist, dass jeder den Vorschlag macht, dass jemand diesen Code benötigt.

Solche Codefragmente sollten einfach gelöscht werden. Und wenn in der neuesten Version des Codes diese entfernten Fragmente nicht vorhanden sind und gleichzeitig jemand sie wirklich benötigt, können sie im Versionskontrollsystem gefunden werden. Ich stelle fest, dass dies nur meine Meinung zu diesem Thema ist.

3. Ungültige Variablennamen


Einmal schrieb ich einen Artikel , der einfache Regeln für die Auswahl guter Variablennamen vorstellte. Qualitative Variablennamen sind äußerst wichtig. Tatsache ist, dass Programmierer normalerweise nicht nur an Projekten arbeiten. Ihre Kollegen müssen den Code verstehen, den sie schreiben. Mit benutzerfreundlichen Variablennamen kann die Wahrnehmung des Codes eines anderen verbessert werden.

Ich wiederhole, was ich im obigen Material gesagt habe: "Die Auswahl guter Variablennamen kostet Zeit, spart aber mehr Zeit als es kostet."

4. "Magische Zahlen" und Zeichenfolgen


Wenn wir unsere Diskussion über das Problem der undurchsichtigen Variablennamen fortsetzen, können wir auf die Idee kommen, bestimmte Werte im Programm zu verwenden, „magische Zahlen“ oder Zeichenfolgen, die überhaupt keine Namen haben und nicht in Variablen geschrieben sind.

Sie können aus Wikipedia lernen, dass „magische Zahlen“ als schlechte Programmierpraxis bezeichnet werden, wenn ein numerischer Wert im Quelltext gefunden wird und nicht klar ist, was er bedeutet.

Sehen Sie sich das folgende Codebeispiel an:

for ($i = 1; $i <= 52; $i++) {     ... } 

Hier ist der Wert 52 die „magische Zahl“. Niemand weiß, warum das genau die Nummer 52 ist und was es bedeutet. Warum 52? Warum nicht 64? Vielleicht ist das die Anzahl der Wochen in einem Jahr?
Dieser Code wird viel klarer, wenn Sie ihn folgendermaßen umschreiben:

 $cardDeckSize = 52; for ($i = 1; $i <= $cardDeckSize; $i++) {    ... } 

Jetzt wird jeder verstehen, dass wir in einem Zyklus ein Kartenspiel durchlaufen. Dies zeigt anderen Entwicklern das Wesentliche des Geschehens an und hilft, den Kontext der ausgeführten Aktion zu verstehen. Dieser Ansatz vereinfacht außerdem die Änderung dieses Werts erheblich, da er, wenn er an verschiedenen Stellen des Programms verwendet wird, nur an einer Stelle im Code festgelegt wird.

Gleiches gilt für die Arbeit mit Strings:

 if (userPasswordIsValid($user, "6yP4cZ".$password)) {    ... } 

Was ist das 6yP4cZ ? Sieht aus wie ein zufälliger Zeichensatz.

Wir schreiben das um:

 $salt = "6yP4cZ"; if (userPasswordIsValid($user, $salt.$password)) {    ... } 

Aber jetzt ist alles viel klarer.

5. Fehlerhafte Code-Formatierung


Die Formatierung von unordentlichem Code ist eine "Krankheit" für unerfahrene Programmierer. Viele Entwickler mit etwas Erfahrung neigen dazu, zustimmend zu nicken, wenn sie gefragt werden, ob sie einen Tester oder einen Datenwissenschaftler kennen, der den Code nicht gut formatiert. Der Grund dafür ist mangelnde Erfahrung. Die einzigen Ausnahmen sind jene Programmierer, die eine Sprache wie Python verwenden, in der die Formatierung des Codes die Ausführung des Programms beeinflusst.

Eine der häufigsten Methoden zur Lösung dieses Problems ist die Verwendung eines Linter. Darüber hinaus unterstützen alle modernen IDEs die Möglichkeit, Code automatisch zu formatieren. Manchmal wird diese Funktionalität mithilfe von Plugins implementiert, die Sie selbst installieren müssen, und manchmal ist sie in den Standard-IDE-Funktionen enthalten.

6. Im Code fest codierte Werte


Wenn die Werte in Programmen fest codiert sind, bedeutet dies, dass die Daten direkt in den Quellcode oder in andere ähnliche Objekte eingebettet sind. Das Gegenteil dieses Ansatzes ist das Abrufen von Daten aus externen Quellen oder das Generieren dieser Daten während der Programmausführung.

Die fest eingestellten Werte ermöglichen keine einfache Konfiguration des Programms. Sie sind sozusagen "in Stein gemeißelt". Dies wird als Antimuster angesehen oder weist zumindest auf offensichtliche Probleme im Code hin.

In den meisten Fällen sind Kennwörter und Dateipfade fest codiert. Sie tun dies aus einer Vielzahl von Gründen, manchmal können sie sogar gerechtfertigt sein.

Beispielsweise sind viele fest codierte Werte in einigen Codebeispielen zu sehen, die für die Authentifizierung bei externen Diensten oder APIs verantwortlich sind. Es ist besser, das nicht zu tun.

Wenn jemand die häufige Verwendung von Werten bemerkt, die fest codiert sind, sollte er seine Arbeit kritisch bewerten. Tatsache ist, dass die Verwendung solcher Werte normalerweise nicht der beste Weg ist, um bestimmte Probleme zu lösen.

Sehr geehrte Leser! Auf welche Mängel im Code sind Sie gestoßen?

Source: https://habr.com/ru/post/de483680/


All Articles