Was ist die maximale Anzahl von Instanzvariablen, die eine Java-Klasse haben sollte?

Ist es ein gutes OO-Design, 20-25 Instanzvariablen in einer JAVA-Klasse mit ihren Getter/Setter zu haben? Alle Variablen sind völlig unabhängig.
Da ich eine Klasse in HBase verwende, die eine Spaltenfamilie darstellt, kann die Spaltenfamilie für jede Zeile eine andere Anzahl von Spalten haben. Also muss ich so viele Variablen in diese Klasse schreiben. Ich bin sehr neugierig zu wissen, Wie viele Instanzvariablen und Methoden sollte eine JAVA-Klasse idealerweise haben?

4
hinzugefügt bearbeitet
Ansichten: 1

5 Antworten

Beim Versuch, einen guten OO zu haben, ist es gut, nach der Klasse zu suchen, die eine einzige Verantwortung trägt. Wenn Sie also so viele nicht verwandte Variablen haben, klingt es, als würde die Klasse zu viel tun.

Dies wäre ein "Code-Geruch" und Sie sollten in mehrere Klassen neu einrechnen.

Es ist großartig, Sie sind an einem guten OO interessiert. Ich empfehle, Refactoring und Code Smells nachzulesen.

http://c2.com/cgi/wiki?OneResponsibilityRule would be relative here..

7
hinzugefügt
de.wikipedia.org/wiki/God_object könnte ebenfalls zutreffen.
hinzugefügt der Autor Eric, Quelle

Es spielt keine Rolle, solange Sie eine Kopplung sicherstellen. Wenn Sie einer Klasse so viele Variablen zuweisen, erhöht sich die Wahrscheinlichkeit einer hohen Kopplung.

Es könnte auch ein Zeichen für eine geringe Kohäsion in Ihrer Klasse sein, im Gegensatz zu die ideale Situation von hoher Kohäsion.

4
hinzugefügt

Bei 20-25 Instanzvariablen sollten Sie innerhalb der Grenze sein, aber ich denke, dass 20-25 zu viel sein könnten. Sie könnten versuchen, diese in verschiedene Klassen zu gruppieren und die Anzahl der Instanzvariablen zu reduzieren.

In der Regel ist der Umfang der Klasse begrenzt, was in einem Szenario, in dem Sie die Lösung beibehalten möchten, nicht ideal ist. Brechen Sie es (wenn es richtig gemacht wird) sollte die Wiederverwendbarkeit einiger Ihrer Klassen erhöhen.

2
hinzugefügt

Nun, wenn Ihre Klasse Data-Holder-Objekte darstellt, dann ist es vollkommen ok, damit zu gehen. Dieser Entwurf ist in den Java-Bohnen allgemein.

Wenn Sie beispielsweise eine Klasse haben, die einen Mitarbeiter in einer Firma repräsentiert, dann ist es ganz normal, wenn ein Mitarbeiter 20-25 Attribute hat.

Aber wenn Sie so viele Instanzvariablen mit Geschäftsmethoden vermischen, werden Sie auf der ganzen Linie auf Schwierigkeiten stoßen, da Sie keine konzentrierten und fokussierten Geschäftskomponenten erhalten werden.

Um es architektonisch besser zu machen, können Sie Vererbung (Unterklasse) oder Komposition (innere Klasse) berücksichtigen.

0
hinzugefügt

Java hat keine Einschränkung für die Java-Instanzvariable, die eine Klasse haben kann. Gemäß Ihrer Anforderung können Sie beliebig viele Instanzvariablen haben.

Der wichtigste Punkt, an den man sich erinnern sollte, ist, dass er nur durch Getter- und Setter-Methoden zugänglich sein sollte. Ein Benutzer sollte nicht in der Lage sein, direkt auf den Namen der Instanzvariablen zuzugreifen.

Means Instanzvariable sollte mit privaten Modifikatoren deklariert werden und öffentliche Methoden bereitstellen, um auf sie zuzugreifen und sie zu manipulieren.

0
hinzugefügt