Nun, die Dinge, die ich in diesem Thread sehe, sind alle großartig, aber ich habe eine Definition einer "Invariante", die für mich bei der Arbeit enorm hilfreich war.
Eine Invariante ist eine logische Regel, die während der Ausführung Ihres Programms befolgt werden muss und die einem Menschen mitgeteilt werden kann, jedoch nicht Ihrem Compiler.
Diese Definition ist hilfreich, weil sie die Bedingungen in zwei Gruppen aufteilt: Denjenigen, denen der Compiler bei der Durchsetzung vertrauen kann, und denjenigen, die dokumentiert, diskutiert, kommentiert oder auf andere Weise an die Mitwirkenden kommuniziert werden müssen, damit sie mit der Codebasis interagieren können, ohne Fehler einzuführen .
Diese Definition ist auch hilfreich, da Sie die Verallgemeinerung "Invarianten sind schlecht" verwenden können.
Beispielsweise ist der Schalthebel in einem Schaltgetriebe so konstruiert, dass eine Invariante vermieden wird. Wenn ich wollte, könnte ich für jeden Gang ein Getriebe mit einem Hebel bauen. Dieser Hebel kann vorwärts ("eingerückt") oder rückwärts ("ausgerückt") sein. In einem solchen System habe ich eine "Invariante" erstellt, die als solche dokumentiert werden könnte:
"Es ist entscheidend, dass der aktuell eingelegte Gang vor dem Einlegen eines anderen Gangs ausgekuppelt wird. Das gleichzeitige Einlegen von zwei Gängen führt zu einer mechanischen Belastung, die das Getriebe zerreißt. Schalten Sie immer den aktuell eingelegten Gang aus, bevor Sie einen anderen einlegen."
Und so könnte man kaputte Sendungen für schlampiges Fahren verantwortlich machen. Moderne Autos verwenden jedoch einen einzelnen Steuerknüppel, der sich zwischen den Gängen dreht. Es ist so konstruiert, dass es bei einem modernen Schaltwagen nicht möglich ist, zwei Gänge gleichzeitig einzulegen.
Auf diese Weise können wir sagen, dass das Getriebe so konstruiert wurde, dass es die Invariante entfernt, da es sich nicht mechanisch so konfigurieren lässt, dass die logische Regel verletzt wird.
Jede Invariante dieser Art, die Sie aus Ihrem Code entfernen, stellt eine Verbesserung dar, da sie die kognitive Belastung der Arbeit damit verringert.