Stilfrage: statische Methoden und Attribute auf jeden Fall verhindern?

Status
Nicht offen für weitere Antworten.

anp

Mitglied
Hi,

angelehnt an meine andere Stilfrage möchte ich ein leidiges Thema wieder aufgreifen.

Oft heißt es, dass static kein guter Stil ist und auf jeden Fall verhindert werden soll, wenn es nicht zu verhindern ist. Meist schafft man es, alle Methoden dynamisch zu gestalten, notfalls mit speziellen Konstruktoren, jedoch ist das manchmal ein in meinen Augen unnötiger Aufwand, dazu möchte ich ein paar Beispiele bringen:

Fall 1: Methode zum Prüfen eines Strings auf einen int-Wert
Nun habe ich eine Klasse, die lediglich diese Methode enthält: Parameter String, return boolean. Welchen Sinn macht es, die Methode non-static zu machen und sie bei jeder Anwendung initialisieren zu müssen? Es gibt keine Klassenattribute, die bei Nebenläufigkeit ein Problem darstellen könnten.
Zugegeben, hier ist der Mehraufwand nicht unbedingt vorhanden.

Fall 2: Methode zum Erstellen einer noch nicht definierten Instanz
Klassen B und C erben von Klasse A, eine (statische) Methode in Klasse A entscheidet, welche spezielle Klasse nun instantiiert wird und gibt sie zurück. Klasse A ist abstract.
Hier wird es nun pikant: muss ich nun eine spezielle Klasse instantiieren (fragt sich nur welche), um die Methode aufzurufen, die mir die eigentlich gewollte Instanz zurückliefert? Oder soll ich diese ganze Methode in eine externe Klasse auslagern, was in meinen Augen noch unsinniger ist?

Was sagt ihr dazu?

VG
 

Marco13

Top Contributor
Zwischen Methoden und Attributen ist da ein gewaltiger Unterschied!

Meine "Faustregel" ist:
Methoden sollte man statisch machen, wenn man sie ohne Verrenkungen statisch machen KANN,
Variablen sollte man NUR statisch machen, wenn man sie unbedingt statisch machen MUSS (und das muss man fast nie)

So eine Int-Prüf-Funktion ist eine Utility-Methode, die keinen Zustand braucht - sollte also auf jeden Fall statisch sein.

Das zweite ist wohl ein Fall für eine (Abstract) Factory (Websuche)
 

anp

Mitglied
Bei der Überlegung für sinnvolle statische Attribute ist mir nichts gescheites eingefallen, deshalb hab ich auch dazu kein Beispiel gebracht ;)

zu Fall 2 habe ich ein konkretes Anwendungsbeispiel, das mit Factory nur einen Sinn machen würde, wenn ich wirklich eine Factory-Klasse mit der genannten Methode realisiere: ich habe eine abstrakte Benutzerklasse und spezialisierte Benutzer, zudem gibt es nur sozusagen nur eine Factory -> meine Anwendung an sich. Damit bin ich wieder bei einer Methode, die die Unterscheidung übernimmt und ob diese Methode in der Benutzerklasse statisch vorhanden ist oder in einer Factory-Klasse meinetwegen non-statisch ist: ich sehe nicht den Vorteil, das auszulagern :(
 

Marco13

Top Contributor
Nun, irgendwo muss die ENTSCHEIDUNG, welche Instanz erzeugt wird, getroffen werden. Aber egal, wo diese Entscheidung getroffen wird: Wenn an irgendeiner Stelle ein "Benutzer" erzeugt werden muss, aber die Entscheidung darüber, welche Art von Benutzer das sein soll, an einer ANDEREN Stelle getroffen werden soll, dann verwendet man eine Factory...
 

anp

Mitglied
Okay, das leuchtet ein. Ist es denn stilistisch in Ordnung, diese Entscheidungsmethode statisch in der Benutzerklasse zu implementieren?
 
S

Spacerat

Gast
Ich hab' da im Allgemeinen auch eine "Faustregel":
1. Hauptsache Funktion! Als erstes muss man sich über die Funktion einer Klasse sammt Attribute und und Methoden im Klaren sein. Hier erfährt man eigentlich schon automatisch, od das ein oder andere besser statisch implementiert werden sollte.
2. Ist die Funktion erstmal hergestellt, kann man sich Gedanken über seinen bzw. eines allgemeinen Programmierstil(s) machen. Meistens kommt man aber schon bei 1. darauf, wie man am besten implementiert.
Beispiele für Beides (statische Methoden und statische Attribute) gibt es wie Sand am Meer.
Beispiel für statische Methode(n): Man schaue sich mal die Klasse "java.lang.Math" an.
Beispiel für statische(s) Attribut(e): Instanzierungszähler einer Klasse. Jemand kann ja mal versuchen, einen solchen anders hin zu bekommen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Stilfrage: statische Variable mit Instanz der gleichen Klasse Java Basics - Anfänger-Themen 8
F Stilfrage: Klassen & Methoden Java Basics - Anfänger-Themen 15
S Stilfrage: Neue Klasse wenn es in einer Klasse zu viele Methoden gibt? Java Basics - Anfänger-Themen 14
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
S Klassen statische Objekterzeugung vor Konstruktoraufruf??? Java Basics - Anfänger-Themen 6
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
C nicht statische Methoden Java Basics - Anfänger-Themen 4
D statische generische Methoden Java Basics - Anfänger-Themen 3
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
N Auf statische Methode zugreufen Java Basics - Anfänger-Themen 9
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
F Statische Klasse => Flaschenhals? Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
E statische Variable ändert sich Java Basics - Anfänger-Themen 7
A Statische Variable in Methoden Java Basics - Anfänger-Themen 7
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
A Nicht-statische Methode in einer statischen aufrufen Java Basics - Anfänger-Themen 10
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
A statische Arraylist Java Basics - Anfänger-Themen 6
Q Variablen Statische Variablen Java Basics - Anfänger-Themen 8
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
V OOP Statische Klassen-Attribute vererben Java Basics - Anfänger-Themen 4
K Statische Bindung Java Basics - Anfänger-Themen 6
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
S statische Methode nebenläufig Java Basics - Anfänger-Themen 2
R Aufruf statische Methode Java Basics - Anfänger-Themen 7
M Statische Methoden Java Basics - Anfänger-Themen 22
C Relativer Pfad - Statische Methode Java Basics - Anfänger-Themen 6
A Statische Methode "vererben" - Zwang durch annotation processor Java Basics - Anfänger-Themen 10
sqsh statische jlabels dynamisch verwalten Java Basics - Anfänger-Themen 2
S Statische Klassen/ Singleton Java Basics - Anfänger-Themen 13
E Statische Member können nicht vererbt werden? Java Basics - Anfänger-Themen 10
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
B statische Variable Java Basics - Anfänger-Themen 10
M Statische und nicht-statische Funktionen: Desktop.browse(uri); Java Basics - Anfänger-Themen 4
H Statische generische Methode Java Basics - Anfänger-Themen 2
A statische Attribute: Vererbung und Zugriff darauf Java Basics - Anfänger-Themen 15
hdi Observer als statische Klasse ? Java Basics - Anfänger-Themen 2
hdi statische synchronisation Java Basics - Anfänger-Themen 6
G statische ArrayList? Java Basics - Anfänger-Themen 8
K Statische Variablen von Objekten im Array Java Basics - Anfänger-Themen 15
K nicht-statische Methode aufrufen Java Basics - Anfänger-Themen 3
S statische variable initialisieren mit exception Java Basics - Anfänger-Themen 2
G statische Variable zugreifen bzw. setzen Java Basics - Anfänger-Themen 6
T in statischem Kontext auf nicht statische Variable beziehen Java Basics - Anfänger-Themen 5
M Statische Funktion Java Basics - Anfänger-Themen 2
M öffentliche nicht-statische Funktion fremder Klasse ausführn Java Basics - Anfänger-Themen 16
C args[] als statische Variablen speicher oder wie? Java Basics - Anfänger-Themen 12
P nicht statische methode instantiieren Java Basics - Anfänger-Themen 7
H statische methoden und sichtbarkeit Java Basics - Anfänger-Themen 13
nadoria statische Methoden (Klassenmethoden) Java Basics - Anfänger-Themen 3
K statische variablen und methode Java Basics - Anfänger-Themen 3
H Was ist nocheinmal eine statische Klasse? Java Basics - Anfänger-Themen 6
G Statische Methoden? Java Basics - Anfänger-Themen 2
kb statische methoden und throws exception Java Basics - Anfänger-Themen 2
H statische, dynamischer Typ von Variablen Java Basics - Anfänger-Themen 1
M Konstruktor eine statische Methode? Java Basics - Anfänger-Themen 9
H statische,dynamische Bindung Java Basics - Anfänger-Themen 4
N Unterschied statische Attribute u. Methoden <-> objekt Java Basics - Anfänger-Themen 4
O nicht-statische Inhalte auf statische Inhalte verweisen Java Basics - Anfänger-Themen 19
M wann statische klassen? Java Basics - Anfänger-Themen 14
U statische Variablen Java Basics - Anfänger-Themen 12
F Statische Methode - Nicht Statische Methode Java Basics - Anfänger-Themen 10
S Statische Felder - statische Methoden Java Basics - Anfänger-Themen 2
D Statische und Nicht-Statische Methoden Java Basics - Anfänger-Themen 7
K Statische Methoden!? Java Basics - Anfänger-Themen 8
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
J Argumente in Methoden übergeben Java Basics - Anfänger-Themen 1
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben