Ich denke, Sie gehen mit dem Prinzip der Code-Wiederholung zu weit. Denken Sie daran, Code-Wiederholungen zu vermeiden. Es geht darum, die Menge an Code zu reduzieren, die bei einer Änderung der Logik überprüft werden muss, und das Verständnis zu verbessern, indem offensichtlich ähnlich beabsichtigte Blöcke herausgerechnet werden.
Die Nachteile des Ausklammerns, um Wiederholungen zu vermeiden, bestehen darin, dass Sie, wenn sich einer der gemeinsam genutzten Blöcke ändern muss, jetzt eine noch komplexere Vererbung oder einen Wechsel zwischen Standard- und Nicht-Standard-Implementierung benötigen.
Wägen Sie daher die Möglichkeit, dass sich die Logik für einen dieser Blöcke ohne die anderen ändert, sorgfältig gegen die Verständnisvorteile ab, die durch das Ausklammern dieser Gemeinsamkeit erzielt werden. Wenn sich eine Implementierung von den anderen trennen könnte, ist es möglicherweise besser, den Code einfach zu wiederholen.
Während Sie diesen wiederholten Code beibehalten, da er komplexer wird und Ihre Problemdomäne definierter wird, ist es möglicherweise angemessener, die wiederholten, jetzt komplexeren, aber auch definierteren Abschnitte herauszufiltern.
Normalerweise versuche ich, die Gleichheit des Texteditors für eine Weile beizubehalten, bis ich sehe, ob sich etwas, das sich wiederholt, als faktorisierbar herausstellt. Ich behalte nur die Wiederholung bei, aber ich behalte die Zukunft dieses Blocks im Auge, indem ich es textlich einfach halte, ihn später abzugleichen.
Die meiste Zeit beginnt sich die Gleichheit und das mögliche Factoring als reale, launische Geschäftsregeln und stark abhängige, oft willkürliche Logik aufzulösen. B. der Umgang mit den Kuriositäten mehrerer gängiger Datenbankimplementierungen (ANSI_NULLS oder ähnliches) wird hinzugefügt; etwas, das wie eine reine Logik schien, in ein verdrehtes Chaos zu zwingen und zu versuchen, eine vernünftige, vertretbare Entscheidungslogik zu liefern , wenn man mit dem Chaos des Zustands der Branche konfrontiert wird.
Es scheint mir, dass wir eine ganze Bibliothek wertloser Konstrukte wie Do1Then2If2False Do1IfTrueDo2 haben würden, wenn die Leute herausfinden würden, was Sie zu berücksichtigen versuchen.
Es muss komplexer und klarer sein, dass sich der Block nicht ändern wird, um das Ausklammern zu rechtfertigen.
Es ist Software . Sie können zurückgehen und einige Blöcke bearbeiten, die im Moment gleich sind. Es dauert 5 Minuten. Und Sie können Stunden verschwendeten Factorings und dann Stunden mehr verschwendeter Vererbung und Switching-Entwicklung sparen, indem Sie es einfach verlassen und sicherstellen, dass Sie eine gute Anti-RSI-Tastatur haben.