Schreiben Sie schlechten Code und seien Sie stolz. Wozu? / Sudo Null IT-Nachrichten

Wenn sich die Frage stellt, wie man Entwicklungskompetenzen verbessern kann, lautet die Standardantwort meistens: Informieren Sie sich über sauberen Code, lernen Sie neue Programmiersprachen, sehen Sie sich Projekte an, in denen Best Practices implementiert sind usw. Aber es gibt einen anderen Weg – vom Gegenteil zu gehen und zu versuchen, den Code so schlecht wie möglich zu schreiben. Indem Sie wirklich schlechten Code schreiben, können Sie schließlich herausfinden, wie man guten Code schreibt. Sie können die Arbeit irgendwie beiläufig und hastig erledigen, aber das wird nicht ausreichen. Da man bereits eine Vorstellung davon hat, wie man gut schreibt, ist es sehr schwierig, bewusst schlecht zu schreiben.

Der andere lässt sich leicht verwirren, weil er Ihren Gedankengang nicht kennt. Es ist viel schwieriger, sich selbst zu besiegen, sodass es nach ein paar Tagen unmöglich wäre, herauszufinden, was wirklich passiert und woher all diese Fehler kommen. In diesem Spiel sind Sie Ihr größter Gegner. Daher wird es sowohl für Anfänger als auch für erfahrene Entwickler interessant sein, sich an einer solchen Herausforderung zu versuchen, da erfahrene Entwickler immer komplexere Tricks haben können.

Haftungsausschluss: Probieren Sie auf keinen Fall funktionierende Projekte aus. Der Autor des Artikels übernimmt keine Verantwortung für verursachte Schäden.

ruhige Wachsamkeit

Wir müssen versuchen, Code zu schreiben, der die Wachsamkeit einlullt. Schlechter Code ist unter anderem deswegen schlecht, weil man nicht sofort versteht, dass er furchtbar geschrieben ist. Wenn es offensichtlich wäre, würde es in einem normalen Team nicht erlaubt sein, den Code zu überprüfen oder anschließend sofort umzuschreiben. Solche primitiven Methoden wie die Benennung von Variablen mit einem einzelnen Buchstaben oder Abkürzungen sind nicht geeignet. Sie wecken sofort den Verdacht, dass etwas nicht stimmt. Und gute Namen, die etwas anderes bezeichnen, sind schon interessanter. Um beispielsweise eine Variable anzugeben, die angibt, ob eine Zahl gerade ist, verwenden Sie statt istEben einfach eben. Sie können die abstraktesten Namen angeben, dies erhöht auch die Komplexität des anschließenden Lesens des Codes.

Eine weitere sehr gute Möglichkeit, die Wachsamkeit einzudämmen, besteht darin, den Code mit Tests abzudecken, jedoch nicht vollständig. Standardmäßig neigen wir zu der Annahme, dass die Wahrscheinlichkeit eines Fehlers geringer ist, wenn der Code mit Tests übersät ist, sodass diese Schwachstelle ausgenutzt werden sollte. Sie können einige extreme Codeoptionen nicht durch Tests abgedeckt lassen, in der Hoffnung, dass es früher oder später funktioniert.

Lernen Sie Fehler zur Laufzeit zu provozieren

Wenn der Code in einer Sprache ohne statische Typisierung geschrieben ist, dann ist alles ganz einfach. Aber in dem Fall, in dem es eine Typprüfung, Linter und eine statische Codeanalyse gibt, kann das Auslösen eines Fehlers während der Ausführung einiges Wissen erfordern. Es lohnt sich, nach Möglichkeiten zu suchen, Fehler zur Laufzeit zu verursachen, davon gibt es in jeder Sprache genug. Beispielsweise können Sie mit TS einen Fehler zur Laufzeit wie folgt aufrufen:

Typ Person = { ID: Zeichenfolge }; const person: Person = { id: ‘obc23z’ }; Konstante Anmeldeinformationen: { ID: Nummer | Zeichenfolge } = Person; credential.id = 1; // TypeError: person.id.toUpperCase ist keine Funktion const personId = person.id.toUpperCase();

Vergessen Sie die Optimierung

Wenn Sie einen Kreislauf in einem Kreislauf sehen, der in einem Kreislauf funktioniert, wird jeder Fragen haben. Dies kann jedoch umgangen werden, indem Rekursion anstelle von Schleifen verwendet wird. Das Schöne an der Rekursion ist, dass selbst diejenigen, die sich gut mit dynamischer Programmierung auskennen, die algorithmische Komplexität der auszuführenden Aufgabe nicht immer sofort berechnen können. Erinnern Sie sich an das Beispiel der Berechnung der Fibonacci-Zahl – wenn Sie sie direkt lösen, können Sie mehrere Jahrhunderte lang Kaffee trinken gehen.

Ganz offensichtlich können alle Sortierungen auf der Rückseite vorgenommen werden, Filter können im Speicher durchgeführt werden. Wenn Sie vergessen, Indizes in der Datenbank zu setzen, oder umgekehrt, setzen Sie Indizes auf alle Felder.

Verursachen Sie ein Speicherleck

Dies ist eine sehr nützliche Fähigkeit, da die Anwendung wahrscheinlich mit Testdaten arbeiten wird, aber nach einer Weile beginnt alles für den Benutzer langsamer zu werden. Ein Speicherleck ist eine Situation, in der ein Objekt, das gelöscht werden sollte, nachdem es nicht mehr benötigt wird, nicht gelöscht wird und keinen Speicher für das Betriebssystem freigibt. Es ist sehr einfach, in JS/TS ein Speicherleck zu verursachen – Sie können eine Aktion in setInterval ausführen und gleichzeitig die Stoppbedingungen einer zyklisch ausgeführten Funktion vergessen. Sie können eventListener erstellen, die auf Ereignisse warten, solange die Anwendung ausgeführt wird. Verwenden Sie Closures, um eine zirkuläre Abhängigkeit usw. zu erstellen.

Vielleicht wird jetzt die Illusion entstehen, dass das Problem in JS selbst liegt, in der Unvollkommenheit der Sprache und Plattform, aber dem ist nicht so. Ich nehme an, in allen Sprachen ist es ohne großen Aufwand möglich, ein Speicherleck zu verursachen. In C# reicht es aus, Felder als statisch zu deklarieren, Daten beim Zugriff auf Ressourcen übermäßig zwischenzuspeichern, die Implementierung von Dispose zu „vergessen“, und die Anwendung wird nach einer Weile langsamer oder hört sogar auf zu arbeiten.

Verwenden Sie komplexe Muster

Das Buch „Techniken des objektorientierten Designs. Design Patterns“ war für viele eine Offenbarung. Fast jeder, der das Buch gelesen hat, hat überall dort versucht, wo er neue Muster anwenden muss und muss. Sie können komplexe vorhandene Muster verwenden und sogar versuchen, eigene zu entwickeln.

Hinterlassen Sie Sicherheitslücken

Moderne Frameworks und Bibliotheken haben bereits eine ziemlich gute Sicherheit. Wenn eine Funktion unsicher ist, versuchen die Entwickler, uns davor zu warnen. Wenn beispielsweise „React“ verwendet wird, kann „gefährlichSetInnerHTML“ verwendet werden. Uns wird jedoch im Klartext gesagt, dass diese Methode nicht sicher ist, sodass ihre Verwendung Verdacht erregen wird. Aber wenn Sie eine Bibliothek verwenden, die eine solche Konstruktion unter der Haube verwendet, werden keine Fragen aufkommen. Nur wenige schauen sich den Quellcode der verwendeten Bibliotheken an. Wenn ein Projekt vor langer Zeit geschrieben und vielleicht sogar aufgegeben wurde, kann es viele Sterne im Github haben und gleichzeitig sind heute viele Schwachstellen bekannt.

Verwenden Sie Technologie unangemessen

Das banalste Beispiel: Versuchen Sie nicht-relationale Datenbanken als relationale zu verwenden. Zum Beispiel MongoDB statt PostgreSQL für die tabellarische Datenspeicherung. Implementieren Sie gemäß dieser Tabelle Paginierung, Sortierung und Filter. Mit einer kleinen Anzahl von Einträgen wird alles großartig funktionieren. Aber bei einer Anzahl von Datensätzen von etwa 100.000 wird die Anwendung bereits stark verlangsamt. Und wenn Sie versuchen, zur letzten Seite zu gehen, gibt mongodb einen Speicherfehler aus.

Ergebnis:

Es gibt viele Möglichkeiten, schrecklichen Code zu schreiben, viel mehr als Möglichkeiten, guten Code zu schreiben: Sie können eine Race-Condition verursachen, Sprachnuancen verwenden, die nur wenige Menschen kennen und sich daran erinnern, Anti-Patterns implementieren. Jeder kann sich sofort etwas Eigenes einfallen lassen. Dieser Artikel zeigt nur die einfachsten Möglichkeiten, schlechten Code zu schreiben.

Die wichtigste Fähigkeit, die man sich durch das absichtliche Schreiben von schlechtem Code aneignet, ist die Aufmerksamkeit gegenüber den eigenen Fehlern und denen anderer. Dabei ist es möglich, dass sich die Wissensbasis und das tiefe Verständnis der eingesetzten Technologien erweitern. Genau zu wissen, wie man dumme oder clevere Fehler macht, wird für jeden Programmierer nützlich sein. Und unter anderem wird es eine interessante Übung für das Gehirn sein.

Similar Posts

Leave a Reply

Your email address will not be published.