(unter der Annahme von Produktionscode)
Ich neige dazu, ein bisschen weiter zu gehen. Ich habe darüber geschrieben, Programme "idiotensicher" zu machen, aber ich qualifiziere das nicht immer: Ich schreibe viel Code, den andere Leute nicht sehen oder mit dem sie nicht arbeiten werden (zumindest ist dies die Erwartung, wenn es geschrieben wird). ichIch bin der Idiot, vor dem ich mich in diesem Fall zu verteidigen versuche. Es ist eine gute Sache, wenn Ihr Programm Probleme für Sie erkennt und das Problem so stark vereinfacht wurde, dass es offensichtlich ist, dass ein Fehler vorliegt und dessen Ursache. Die Wahrheit ist, dass Implementierungsdetails offensichtlich sind, wenn Sie ein Programm schreiben (es sei denn, Sie implementieren es vorzeitig), aber sie sollten für Clients abstrahiert und fehlerresistent sein (selbst wenn eine Modullokalität vorhanden ist). Der Grund dafür ist, dass Programme sehr komplex werden. Manchmal kann man Probleme trennen, aber nicht die ganze Zeit. Wenn Sie Ihre Komponenten sehr streng, einfach, gut gekapselt und idiotensicher halten, sind sie in der Regel gut skalierbar und die meisten Fehler werden vor dem Versand erkannt. Es ist einfacher, die Programme wiederzuverwenden, und Sie haben mehr Vertrauen und eine einfachere Zeit, die Programme wiederzuverwenden. Diese komplexen Programme, die Sie schreiben, werden erst nach einiger Zeit komplexer (auch für Sie). Wenn Sie es in 6 Monaten lesen, kann das Verstehen und Debuggen im Vergleich zur idiotensicheren Version absurd lange dauern. Wenn eine Komponente eine Unterbrechungsänderung einführt, kann sie ansonsten für eine lange Zeit unentdeckt bleiben. Programme sind komplex; Sie können dieser Realität nicht entkommen, aber Sie können sie idiotensicher machen, was Ihr Leben viel einfacher macht, wenn etwas schief geht oder wenn es wiederverwendet oder verändert werden muss. Daher bedeutet der idiotensichere Ansatz, dass Ihre Software auch von Ihren Junioren oder neueren Mitarbeitern im Team verstanden, wiederverwendet oder gewartet werden kann (nicht nur von jemandem, der so gut / erfahren ist wie Sie). Ersatz ist ein besonderes Anliegen: Wenn die Leute gerne mit Ihren Programmen arbeiten, leisten Sie gute Arbeit. Sorgen Sie sich nicht um Ersatz. Sicher, ich könnte mir Szenarien einfallen lassen, in denen unverständliche Programme Ihren Job retten könnten, aber das Schreiben eines guten Programms, das andere verwenden und warten können, ist eindeutig das geringere Übel (siehe die Resopns der anderen). Wenn ich mich dabei ertappe, etwas zu schreiben, das nicht idiotensicher ist, versuche ich, das zu beheben.
Abgesehen von dem Szenario, in dem Sie einige Unterlagen für sich selbst benötigen, um ein Projekt nach 6 Monaten Pause fortzusetzen, scheint hier ein klarer Interessenkonflikt zwischen dem Entwickler und dem Softwareunternehmen zu bestehen.
Sie haben wirklich keine Ahnung, was Sie manchmal gedacht haben, als Sie inaktive Implementierungen erneut durchgesehen haben. Wenn Sie wirklich erfahren sind, ist das Problem einfacher, weil Sie sich mehr auf etablierte Methoden oder Ansätze verlassen können, die Sie verwenden. Dies setzt jedoch voraus, dass diese Methoden unveränderlich sind. Auch wenn die Dokumentation nachlässt, müssen Sie in Ihren Implementierungen immer noch defensiv sein (z. B. wissen Sie besser, als in diesem Szenario NULL zu übergeben - testen Sie diese Bedingung).
Als Programmierer sollten Sie also wirklich hervorragende Dokumentationen und leicht lesbaren Code für alle schreiben. oder sollten Sie Code und Dokumentation so schreiben, dass sie die Aufgabe erfüllen und Sie sie selbst verstehen können, aber eine andere Person hat möglicherweise Probleme, sie zu verstehen?
Ich empfehle den idiotensicheren Ansatz, der noch klarer und fehlerresistenter ist als der Busfaktor-Ansatz. Schreiben Sie Ihre Programme und Dokumentationen so, dass sie von jemandem außerhalb des Projekts leicht verstanden werden - es ist auch gut für Sie. Dadurch erhöhen Sie Ihren Wert für Ihr Unternehmen und Ihr Team, sie möchten Sie nicht ersetzen.