In Ruby sollte jede Klasse ihre eigene Instanzzählung aufrechterhalten, was durch Klassenvariablen auf Instanzenebene erreicht werden kann. Klassenvariablen auf Instanzenebene ermöglichen es verschiedenen Ebenen einer Klassenhierarchie, ihre eigenen Zähler aufrechtzuerhalten. Klassenvariablen hingegen werden über alle Instanzen und Unterklassen hinweg geteilt, was zu unerwarteten Ergebnissen führt. Um einen Instanzzähler zu implementieren, wird eine Klassenvariable auf Instanzenebene initialisiert und ein privater Setter definiert, um sicherzustellen, dass sie von außerhalb der Klassenhierarchie nicht geändert werden kann. Eine Klassenmethode wird erstellt, um den Instanzzähler sicher zu inkrementieren, ohne den privaten Setter offenzulegen. Wenn eine Instanz einer Klasse erstellt wird, inkrementiert sie den Zähler nur für diese Klasse, während die Zähler anderer Klassen unabhängig bleiben. Durch die Verwendung von Klassenvariablen auf Instanzenebene und die private Einschließung ihrer Setter ermöglicht es jeder Klasse, ihre eigene Instanzzählung ohne Einfluss von Unterklassen oder externen Aufrufen aufrechtzuerhalten. Dieser Ansatz ermöglicht das Design sauberer und effizienter Klassenhierarchien. Es wird nicht empfohlen, Klassenvariablen anstelle von Klassenvariablen auf Instanzenebene zu verwenden, da sie den Zustand über die Hierarchie hinweg teilen, was zu Fehlern führt. Private Setter sind typisch, wenn es darum geht, wie bestimmte Werte innerhalb einer Klasse oder eines Moduls manipuliert werden.
dev.to
How to Implement Instance Counters with Class-Level Variables in Ruby?
Create attached notes ...
