Einfach ausgedrückt: Schlechte Trennung von Bedenken innerhalb des Codes führt zu Code, der nicht modular ist, führt zu schlechter Wiederverwendung, führt zu doppeltem Code.
Wenn Sie nie versuchen, die Funktionalität zu wiederholen, erhalten Sie keinen doppelten Code, und viele Instanzvariablen sind kein Problem.
Wenn Sie versuchen, die Funktionalität zu wiederholen, kann monolithischer Code, der nicht modular ist, nicht wiederverwendet werden. Es macht zu viel und kann nur das tun, was es tut. Um etwas Ähnliches, aber nicht dasselbe zu tun, ist es "einfacher", auszuschneiden und einzufügen, als den monolithischen Code aufzubrechen. Erfahrene Programmierer wissen, dass duplizierter Code der Weg zur Hölle ist.
Während also viele Instanzvariablen selbst nicht die Hauptursache des Problems sind, ist es ein starker "Geruch", dass das Problem auftaucht.
Die Sprache "kann nicht weit hinterher sein" ist schwächer als das Sprichwort "muss unbedingt folgen", so dass der Autor nicht behauptet, dass es passieren muss, aber irgendwann passieren wird; Wenn Sie Funktionen wiederverwenden müssen, dies jedoch nicht können, da der Code nicht modular ist.
n
Boolesche Variablen erzeugen zum Beispiel einen internen Zustandsraum von2^n
. Meistens, obwohl Ihr Objekt nicht so viele beobachtbare Zustände hat , aber weil Sie all diesen Zustand in ein einziges Objekt gepackt haben, müssen Sie intern immer noch alle behandeln.