Static oder wie?

Status
Nicht offen für weitere Antworten.

tfa

Top Contributor
SlaterB hat gesagt.:
genauso unschlüssig ist es, aus reinem Selbstzweck sinnlos einen bedeutenden Grundsatz einzusetzen
Einverstanden :toll:

byto hat gesagt.:
Und selbst wenn es nur eine Implementierung des Interface gibt, fallen einem genug Gründe dafür ein, trotzdem auf dem Interface zu arbeiten...
Wenn man diesen Satz etwas umformuliert, wird es deutlicher:
Wenn es erstmal nur eine Implementierung des Interfaces gibt, einem aber gute Gründe dafür einfallen, dass es später einmal mehr geben könnte, sollte man mit Interface arbeiten.
 

Verjigorm

Top Contributor
oh man, wieso hab ich nur gefragt, war doch klar, dass es so ausartet :D :shock: :autsch: :bloed:

Auch wenn ich normal alles OOP mache, finde ich, hier ist ein guter Platz für statische Methodenaufrufe :)
Weil die Funktionen keinerlei Bezug zu einer Instanz/Klasse/Objekt haben/brauchen

*closed* für mich persönlich!
 

byte

Top Contributor
SlaterB hat gesagt.:
'Programmierung nach Interfaces' ist auch für sich kein Grundsatz den man überall einsetzt,
etwa bei allen Datenklassen, bei JFrames usw,
kein Mensch hat doch wohl ein ganzes Programm nur aus Interfacen?,
insbesondere wieder noch weniger in einfachen Anfängerprogrammen

wenn man das so sieht, dann hat ja static tatsächlich generell jede Berechtigung verloren,
aber das wäre ja noch ein Schritt weiter als ich das bisher hier gesehen habe,
für ALLE Klassen in einem Projekt..
Klar machen Interfaces bei Datenklassen Sinn. Wenn Du Deine Anwendung über verschiedene Schichten kaspelst, willst du bestimmt nicht die konkreten Implementierungen über deine Fassaden sichtbar machen, sondern eben nur die Interfaces. Auch im Kontext der GUI-Programmierung sind Interfaces natürlich sinnvoll, z.B. bei der Umsetzung eines MVC-Konzepts (gemeinsame Schnittstelle aller Views und Controller in Interfaces extrahieren).

In den meisten Fällen ist es einfach Faulheit, wenn man Funktionen static macht. Nicht selten rächt sich das dann irgendwann, denn es ist Gang und Gebe, dass sich Anforderungen mit der Zeit ändern. Vielleicht gibts übermorgen doch noch eine alternative Berechnungsvorschrift? Dann bist Du froh, wenn Du Dir nicht jegliche Möglichkeit der Polymorphie verbaut hast.
 
S

SlaterB

Gast
wie gesagt einer der Grundsätze: unmöglich zu verbauen und jederzeit kinderleicht nachzurüsten,
bei eindeutigen Klassennamen und den einfachen statischen Aufrufen fast schon per Replace
 

byte

Top Contributor
Sowas ist natürlich auch immer ein riesen Spaß in großen Projekten mit vielen Entwicklern. Vor allem wenn man auf mergen steht. :roll:
 
S

SlaterB

Gast
das ist ein gutes Argument, wenngleich es mir persönlich auch noch nie ernstlich begegnet ist,
wenn das mal passiert werde ich vielleicht auch so denken
 

hupfdule

Top Contributor
byto hat gesagt.:
Sowas ist natürlich auch immer ein riesen Spaß in großen Projekten mit vielen Entwicklern.

Gerade in großen Projekten merkt man den Horror, den eine unnötige exzessive Verwendung von Interfaces und Design Pattern erzeugt. Denn großen Projekte sind ja nun mal schon von sich aus komplex. Wenn dann noch Abstraktionsschichten enthalten sind, die nur aus Prinzip eingefügt wurden, obwohl klar ist, dass diese gar nicht nötig waren, erzeugt das massiven Mehraufwand bei der Weiterentwicklung. Gerade dadurch kann man sich etwas verbauen, nämlich eine vernünftige Wartbarkeit.
 

byte

Top Contributor
Dem kann ich so nicht ganz zustimmen. Ich gebe Dir insofern recht, dass der Code durch die Verwendung von Pattern auf den ersten Blick nicht umbedingt übersichtlicher oder leichter verständlich wird. Die Wartbarkeit steigt aber auf jeden Fall durch den Einsatz der Pattern - man muss dafür aber das Pattern verstanden haben.
 
M

maki

Gast
IMHO hat man in großen Projekten gar keine andere Chance vernünftige Wartbarkeit zu bieten als Design Patterns einzusetzen und die auch zu dokumentieren, sei es nur mit ein paar schlichten UML Diagrammen welche die Klassen und die Patterns darin zeigt.

(Anti) Pattern welche die Wartbarkeit erschweren gibt es auch, Singleton zB., ist aber wohl bekannt und dokumentiert.

Einfach nur zu "Übungszwecken" Pattern zu verbauen kann allerdings schnell schief gehen, wenn sich die Autoren über die Vor-/Nachteile oder gar den eigentlichen Zweck des Patterns nicht klar waren.

zB. wird das Singleton gerne verwendet, um von überall auf ein Objekt zugreifen zu können.
Dafür war es nicht gedacht und genau dieser Anwendungsfall macht oft Ärger, zB. beim testen.

Soll heissen: Patterns können Probleme lösen, oder sie erzeugen.

Zusätzliche Abstraktionsschichten sind eigentlich das allheilmittel der SW Branche *g*

So sagte Butler Lampson 1972:
"All problems in computer science can be solved by another level of indirection."

IME sind richtig angewandte Interfaces&Patterns in großen Projekten ein muss, aber dann bitte richtig.
 

ms

Top Contributor
maki hat gesagt.:
... Design Patterns einzusetzen und die auch zu dokumentieren ...
das ist der Punkt, auf den es ankommt.
Komplexität sollte nicht mit fehlendem Verständnis oder mangelndem Überblick verwechselt werden.
Und dazu sind gewisse Dokumentationen notwendig.

Zb. für die Zertifizierung zum SCJD (Sun Certified Java Developer) wird unter anderem ein Dokument verlangt in dem Designentscheidungen dokumentiert werden sollen, also warum verwende ich welchen Pattern.
Ob ein Pattern jetzt sinnvoll, nicht sinnvoll oder gar nicht eingesetzt wurde ist die eine Sache. Aber die Begründung für diese Entscheidung sollte in jedem Fall festgehalten werden.

ms
 
M

maki

Gast
Hast Recht ms,

diesen Punkt hatte ich vollkommen vergessen, die Designentscheidungen begründen & Dokumentieren.
 

ms

Top Contributor
Bitte jetzt nicht denken, dass ich immer alles brav dokumentiere. :D
In all meinen bisherigen Projekten hat es eine solche Dokumentation nicht gegeben.
Nur mittlerweile erkenne ich die Wichtigkeit guter Dokumentation.
Ich denke es liegt an der bei uns gelebten Projektkultur, dass die Dokumentation nur eine üble Notwendigkeit darstellt.
Und genauso sehen sie dann auch meistens aus.

ms
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Methoden abstract static Methode Allgemeine Java-Themen 8
N nicht static und auch nicht new Allgemeine Java-Themen 3
P static Blocks und variablen Allgemeine Java-Themen 41
Kirby.exe Cannot make a static reference to the non-static field rimWidth Allgemeine Java-Themen 12
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S static in Interface und Klasse Allgemeine Java-Themen 2
S static methode im Interface Allgemeine Java-Themen 1
A Variablen non-static variable cannot be referenced from a static content Allgemeine Java-Themen 4
P Static Variable -> unterschiedliche Werte? Allgemeine Java-Themen 1
K Static Variablen verbieten Allgemeine Java-Themen 10
C Generic collections und static typing Allgemeine Java-Themen 4
M Warum nicht static ? Allgemeine Java-Themen 10
M Eine static-Methode verlassen Allgemeine Java-Themen 2
B Schlüsselworte [ERLEDIGT] static { } - Was ist das und wofür kann ich das brauchen? Allgemeine Java-Themen 1
J private static final String variable Allgemeine Java-Themen 8
L Non-static-Variables in Enumerationen Allgemeine Java-Themen 2
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
T Enumeration/Static Final/Bitfield Allgemeine Java-Themen 6
T Static kann nicht verändert werden Allgemeine Java-Themen 3
W Threads Cannot make a static reference.. Allgemeine Java-Themen 13
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
N Static oder andere Lösung Allgemeine Java-Themen 5
N Vererbung Static & private fields - Nicht ganz einfach? Allgemeine Java-Themen 4
M Wo hin mit static factory methods? Allgemeine Java-Themen 40
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
S Cannot make a static reference to the non-static field MySecondClass.Points Allgemeine Java-Themen 3
M Methoden Static Methoden und Thread??? Allgemeine Java-Themen 4
S auf public void Methode zugreifen ohne static Allgemeine Java-Themen 11
K Static - Problem Allgemeine Java-Themen 10
M Variablen Variablenzugriff aus static void Allgemeine Java-Themen 21
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
S static methoden Allgemeine Java-Themen 9
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
X HTTP Problem mit static/non static JTextArea Update Allgemeine Java-Themen 17
A Annotation einer Subklasse im static-Block auslesen. Allgemeine Java-Themen 6
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7
B static Variable / Unterklasse Allgemeine Java-Themen 2
I Was macht static { ... } ? Allgemeine Java-Themen 8
G static inner Klassen Allgemeine Java-Themen 7
G static und dynamic linking? Allgemeine Java-Themen 32
J in einer static Variable Wert ändern Allgemeine Java-Themen 6
J Verständnisfrage - nested static classes Allgemeine Java-Themen 11
G static- Methoden überschreiben Allgemeine Java-Themen 10
E Geschwindigkeit static Allgemeine Java-Themen 6
I reflection get inner static classes Allgemeine Java-Themen 2
L static main - Spezifikation? Allgemeine Java-Themen 7
G URLClassLoader stößt static Block nicht an Allgemeine Java-Themen 8
D static Allgemeine Java-Themen 46
P static-Methode aus dem Konstruktor aufrufen Allgemeine Java-Themen 6
oliver1974 "(.) should be accessed in a static way" Falsche W Allgemeine Java-Themen 6
P static Klassenvariable Allgemeine Java-Themen 15
B JPasswordField klassenübergreifend auslesen->static Probl Allgemeine Java-Themen 4
F Methoden: static vs. instance Allgemeine Java-Themen 24
MQue static Methoden/Klassen Allgemeine Java-Themen 7
K Warum static-Methoden nutzen Allgemeine Java-Themen 26
G Java-Befehle Native und Static Allgemeine Java-Themen 2
conan2 static-Block in Klassen Allgemeine Java-Themen 6
M JNI, static.a mit load.Library laden? Allgemeine Java-Themen 2
K Static Members von Superklasse für JEDEN Erben Allgemeine Java-Themen 6
padde479 The static method sleep(long) from the type Thread should. Allgemeine Java-Themen 2
M static-Methode vorschreiben Allgemeine Java-Themen 5
S singleton vs. static Allgemeine Java-Themen 7
G Object mit static Feldern speichern Allgemeine Java-Themen 9
J Warum heißt es eig. "public static void main" ? Allgemeine Java-Themen 4
conan2 "Cannot make a static reference to the non-static field Allgemeine Java-Themen 8
P Singleton vs static Allgemeine Java-Themen 19
J parameterized und static fields Allgemeine Java-Themen 4
A Static reference to non-static field Allgemeine Java-Themen 10
S static umgehen Allgemeine Java-Themen 5
G static oder nicht Allgemeine Java-Themen 4
J Problem mit static/non-static Allgemeine Java-Themen 2
G getAppletContext() in static Methode Allgemeine Java-Themen 3
m@nu Programm-Models in Static-Objekten speichern Allgemeine Java-Themen 5
J Nicht-static variable in static variable kopieren - wie? Allgemeine Java-Themen 14
O does not declare a static final serialVersionUID field of . Allgemeine Java-Themen 6
G static vor einem array Allgemeine Java-Themen 2
K Überschreiben von 'static'-Methoden hat anderes Verhalten? Allgemeine Java-Themen 2
A JSP & static-Variablen Allgemeine Java-Themen 3
B Static Import: Syntaxfrage Allgemeine Java-Themen 2
S Static + Speicher + Bytecode etc. Brauche HILFE :/ Allgemeine Java-Themen 11
Z auf static Methode aus anderen Package zugreifen? Allgemeine Java-Themen 7
N this im public static void Allgemeine Java-Themen 3
C Communication zwischen zwei Projekte - static objects Allgemeine Java-Themen 4
S static mit abstract und in interface Allgemeine Java-Themen 10

Ähnliche Java Themen


Oben