: Dieser Artikel wurde ausschließlich zum Spaß geschrieben. Versuchen Sie nicht, es bei der Arbeit zu wiederholen. Machen Sie jedoch zu Hause, was Sie wollen. Haftungsausschluss Wir Entwickler stoßen regelmäßig auf , das gehört einfach zu unserem Job. Daher stellt sich auf den ersten Blick die Frage „Kann man absichtlich einen Bug machen?“ mag banal erscheinen – „Ja, natürlich kann ich einen Fehler schreiben.“ Wenn man jedoch darüber nachdenkt, scheint nicht mehr alles so offensichtlich zu sein. Fehler Tatsache ist, dass der . Ein Bug ist ein Fehler, ein Fehler im Allgemeinen Fehler nicht dasselbe ist wie defekter Code Arbeitsprogramm. Der Begriff „Bug“ im Zusammenhang mit Softwareproblemen entstand 1947, als eine Motte eine Fehlfunktion im Harvard Mark II-Computer verursachte. Die Ingenieure fanden buchstäblich eine Motte, die in einem der Relais steckte, und sie bezeichneten es als „den ersten tatsächlichen Fall, in dem ein Fehler gefunden wurde“. Was ist das Problem? Die Welt lässt sich bekanntlich gut durch mathematische Formeln beschreiben. Und die Formeln sind eigentlich die Algorithmen. Wenn wir also in der Lage wären, ein Phänomen mathematisch zu beschreiben, wäre es keine triviale Aufgabe, die resultierende Formel so zu korrigieren, dass sie das falsche Ergebnis liefert. Dennoch ist es nicht an der Zeit zu verzweifeln. Dabei können uns weiterhelfen. Wir alle haben diese gesehen. Mit den Grenzen stimmt immer etwas nicht 🤷♀️. Beachten wir also die erste Idee zum Erstellen eines Fehlers: . nur manchmal Randbedingungen if index == 0 {…} else if index == n-1 {…} Randfälle ignorieren Im Allgemeinen ist das Durchlaufen von Arrays eine Quelle potenzieller Fehler. Und die häufigste davon ist . Wenn Sie noch nie auf so etwas gestoßen sind, haben Sie noch nie codiert. Leider ist dieser Fehler so weit verbreitet, dass man begann, sichere Wrapper für Arrays zu schreiben, etwa . Daher werden Ihre Kollegen heute kaum einen Code ohne dieses Ding genehmigen. Sie können es versuchen, aber es ist unwahrscheinlich ... „Index außerhalb der Grenzen“ array[safe: index] Zu den häufigsten Fehlern gehört . Ein rekursiver Algorithmus kann unendlich oft wiederholt werden, wenn keine Beendigungsbedingung vorliegt. Rekursion scheint hier optional zu sein – schreiben Sie , und Sie sind fertig. Allerdings spielt die Popularität des Fehlers erneut gegen uns. Die Entwickler sind sich der potenziellen Probleme von Endlosschleifen durchaus bewusst und werden beim Code-Review auf jeden Fall auf so etwas stoßen 👮 der Stapelüberlauf while true Um Ihren heimtückischen Plan dennoch in die Tat umzusetzen, versuchen Sie . , eine globale Variable für Beendigungsbedingungen zu verwenden und diese stillschweigend von außen zu ändern var coditionCounter = 0; class A { func foo() { while coditionCounter < 10 { coditionCounter++; B.boo(); } } } class B { func boo() { coditionCounter--; } } Allgemeine Ratschläge Es ist lustig, dass sogar ChatGPT sich weigert, beim Schreiben von Fehlern zu helfen. Vielleicht brauche ich einfach ein Premium-Abonnement… 🤔 Positiv zu vermerken ist, dass eine Reihe allgemeiner Regeln bietet, die zum Schreiben von fehlerfreiem Code beitragen: In kleinen Schritten codieren, Codierungsstandards befolgen, Unit-Tests schreiben und Bla-Bla-Bla. Wir können das Gegenteil versuchen – Spaghetti-Code schreiben und SOLID vergessen. Allerdings den wir schreiben. Anstelle einer eleganten Punktwaffe erhalten wir ein unkontrollierbares Chaos, das unser Programm erobern wird. KI verlieren wir auf diese Weise die Kontrolle über den gesamten Code, Bei der Lösung des Problems der Entstehung eines Fehlers lohnt es sich, die Teilaufgaben festzulegen. Zuerst müssen wir uns einige seltene Randfälle einfallen lassen. Zweitens müssen wir den Fehler als regulären Code tarnen, damit er die Codeüberprüfung besteht. Drittens müssen wir die Aufmerksamkeit der Qualitätssicherungsabteilung abschwächen. Viertens: Lassen Sie sich nicht gleich erwischen. Dies ist aber bereits optional. Mein allgemeiner Rat ist wie folgt (und Sie teilen Ihren in den Kommentaren): . Um einen Rückzieher zu machen, ändern Sie die Werte wichtiger Parameter an den unerwartetsten Stellen. Tun Sie dies über mehrere Kurse hinweg, als wären Sie ein VPN. Bearbeiten Sie die Zugriffsebene Implementieren Sie eine unerwartete Logik in der untergeordneten Klasse. Kurz gesagt, . brechen Sie das L-Prinzip in SOLID class A { func decrease() { x--; } } class B: A { override func decrease() { x++; } } Verstecken Sie Ihre heimtückischen Änderungen in größeren Funktionen. – verlieren Sie sich in der Menge. Je mehr Schlangen, desto besser Verwenden Sie dasselbe Prinzip bei Pull-Anfragen. Bei einer kleinen PR ist die Wahrscheinlichkeit, wahrgenommen zu werden, höher. Versuchen Sie, den Fehler in Teile aufzuteilen und sie in einzufügen. Wenn möglich, dann auch an verschiedene Gutachter. verschiedene Pull-Anfragen Finden Sie die Schwächen Ihrer Qualitätssicherung und gewinnen Sie sein Vertrauen. Oder lenken Sie sie mit Gesprächen während der Kontrolle ab. Haben Sie übrigens schon von Heisenbug gehört? Dies ist ein Fehler, der während der Recherche/ verschwindet oder sein Verhalten ändert. Wie Schrödingers Katze. Perfekt, wenn das Fix-Problem nicht Ihnen zugewiesen wird. Debugging Ein häufiges Beispiel für einen Heisenbug ist ein Fehler, der auftritt, wenn das Programm mit einem optimierenden Compiler kompiliert wird, nicht jedoch, wenn dasselbe Programm ohne Optimierung kompiliert wird (wie es häufig zum Zweck der Untersuchung mit einem Debugger geschieht). Beim Debuggen werden Werte, die ein optimiertes Programm normalerweise in Registern behalten würde, häufig in den Hauptspeicher verschoben. Du kannst An sich selbst glauben! Die Geschichte kennt Beispiele dafür, dass in sehr seriösen Unternehmen ein Fehler in die Produktion gelangte. Einer der teuersten Softwarefehler trat 1996 auf, als die Ariane-5-Rakete mit der Cluster-Mission nur 40 Sekunden nach dem Start explodierte. Der Fehler wurde auf einen Softwarefehler im Leitsystem der Rakete zurückgeführt. Ariane-5-Flug 501: 1999 verlor die NASA den Mars Climate Orbiter aufgrund eines Softwarefehlers. Die Software verwendete imperiale Einheiten (Pfundsekunden) anstelle von metrischen Einheiten (Newtonsekunden), was dazu führte, dass das Raumschiff in der Marsatmosphäre verglühte. Der Mars Climate Orbiter der NASA: Darüber hinaus können einige Fehler zu Features werden, wie z. B. ein Mauerspringen in oder das Verhalten von Mahatma Gandh in … wahrscheinlich. Mario Civilization Einen Fehler zu entwickeln ist die Fähigkeit, Ihren Algorithmus zu durchdenken und mögliche Probleme gründlich zu antizipieren. Auch wenn Sie also keinen Grund haben, einen Fehler im Code zu belassen, ist es dennoch eine Überlegung wert.