Liegt hier bereits ein Bad Smell vor?

Maik.Neumann

Aktives Mitglied
Guten Tach !

Ich habe derzeit mit einem Projekt in Java (genauer gesagt Maven) zu tun, dass aus drei verschiedenen Maven Projekten besteht, wobei eines davon eine Art Anwendungskern darstellt, eines ist speziell für GUI Seiten (JSF) und das letzte händelt so ein bisschen das Zusammenspiel zwischen GUIs und den Klassen, die direkt hinter diesen GUIs stehen (JSF Beans).

Nun ist es leider so, dass die einzelnen Klassen dieser Projekt sich fast vollständig gegenseitig kennen und somit harte Abhängigkeiten (Projektübergreifend und auch Paketübergreifend) vorhanden sind.

Meine Frage an euch (auh wenn es eine sehr allgemeine Frage ist): Ist diese Art von Projektaufteilung schon im Vorraus irgendwann zum Scheitern verurteilt? Sind solche gegenseitigen "Bekanntschaften" von Klassen aus unterschiedlichen Paketen und Maven Projekten bereits schon eine Art Bad Smell und wenn ja, wie kann man so etwas versuchen zu entkoppeln? Evtl. nur über die Definition von Schnittstellen?
 

Sogomn

Bekanntes Mitglied
Was ist eine harte Abhängigkeit? Ich kenne nur public, package local, protected und private.
Er redet von fester Kopplung, glaube ich.

Ich kenne deinen Code nun natürlich nicht - mit Maven hab' ich auch noch nichts zu tun gehabt - aber ich hatte dasselbe Problem bei einem anderen Projekt. Ich denke, deine Idee, mit Interfaces zu arbeiten, ist gut.
 
Zuletzt bearbeitet:

Bug Fisher

Bekanntes Mitglied
1. Frage: ja warum kennen sich denn fast alle Klassen gegenseitig ? Ich meine, warum hast du das überhaupt so gebaut ? Wenn das notwendig ist, wären ganz klar Zuständigkeiten vermischt, die bei einzelnen Klassen klarer aufgeteilt sein sollten.
Also Assoziationen sind standard und ohne gibt es kein größeres Projekt, aber das klingt so, als hättest du eine Art eingetretenen Weg, allen Klassen erstmal alle anderen mitzugeben... muss das sein ?
 

nvidia

Bekanntes Mitglied
[...] wie kann man so etwas versuchen zu entkoppeln? Evtl. nur über die Definition von Schnittstellen?

So viele Möglichkeiten gibt es da nicht, eine wäre z.B. sich auf OSGI zu stützen aber wenn man begriffen hat was dort eigentlich passiert kann man das auch mit Selbstbeherrschung und dependency injection Frameworks hinbekommen.

Eine art live-Coding-Session auf OSGi-Basis und Gedanken zu Modularität findet man z.B. hier https://www.parleys.com/play/543f9312e4b08dc7823e549a/about.
 

Ruzmanz

Top Contributor
Die Aufteilung klingt wie eine Schichtenarchitektur. Wenn dessen Prinzipen eingehalten werden ist die Architektur in einem guten Zustand. Es sollten auf keinen Fall eine zyklischen Abhängigkeit zwischen den Projekten vorhanden sein.

Bei Interfaces gibt es verschiedene Strategien. In deinem Fall würde ich vorschlagen, dass alles so bleibt wie es ist. Eine Implementierung == Kein Interface. Wenn das Projekt wächst, kann man die Klasse kopieren und den Namen ändern. Zum Beispiel von "User" in "StandardUser". Die Klasse "User" wird zum neuen Interface. Dann kannst du mit suchen und ersetzen jede Stelle im Quellcode von "new User()" auf "new StandardUser()" ändern. Anschließend erstellst du dir deine neue Klasse "PrivilegedUser" und implementierst diese ...

Wie man das aufteilt ist vom Prinzip her egal. Ich habe auch schon Software gesehen, wo jede Schicht in einem eigenen Projekt abgelegt wurde. Ob das nun ein Package oder Projekt ist spielt i.d.R. kaum eine Rolle. Der Hintergedanke ist, dass man das GUI-Projekt irgendwann wegwerfen könnte, um von SWT auf XYZ zu wechseln. D.h. die anderen Projekte dürfen zwar aktuell auf die Daten des GUI-Projekts zugreifen, aber keine SWT spezifischen Dinge implementieren / nutzen. Wenn du jetzt sagst, dass ihr ein Projekt "speziell für GUI Seiten" habt, dann darf im Anwendungskern keine Abhängigkeit zu JFace bestehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Wo liegt hier der Fehler? Java Basics - Anfänger-Themen 13
L wo liegt hier der fehler? Java Basics - Anfänger-Themen 3
H weiss nicht wo hier der fehler liegt Java Basics - Anfänger-Themen 3
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
M BerechneEtwas Weiss jemand woran es liegt Java Basics - Anfänger-Themen 8
W Wo liegt der Fehler? Java Basics - Anfänger-Themen 8
B Keine Ausgabe .. Woran liegt das? Ich komme nicht weiter Java Basics - Anfänger-Themen 14
A Class not found - Jar liegt am classpath Java Basics - Anfänger-Themen 2
G Input/Output Wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
P wo liegt der Fehler? Java Basics - Anfänger-Themen 2
W Compiler-Fehler Fehler - <identifier> expected, wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
B Compiler-Fehler Wo liegt der Fehler? Java Basics - Anfänger-Themen 3
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
J Wo liegt nur an dieser einfachen Bedingung mein Fehler? Java Basics - Anfänger-Themen 8
R Schaffe es nicht Random-Programmierung zu vollenden. Wo liegt der Fehler in diesem Code? Java Basics - Anfänger-Themen 13
J Wo liegt der Fehler? Java Basics - Anfänger-Themen 7
J ResultSet.getStrin - doch kein String? oder wo liegt das Problem? Java Basics - Anfänger-Themen 3
S GaussJordan in Java, wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
A Datum prüfen, ob es vor einem anderen Datum liegt Java Basics - Anfänger-Themen 2
T Wo liegt der Fehler ? -.- Java Basics - Anfänger-Themen 3
P Datentypen Fehler nur wo liegt das Problem? Java Basics - Anfänger-Themen 7
R NullPointerException ,wo liegt der Fehler? Java Basics - Anfänger-Themen 2
K OOP Methoden überladen, wo liegt das Problem? Java Basics - Anfänger-Themen 22
I OOP This-Referenzs > wo liegt mein Denkfehler? Java Basics - Anfänger-Themen 24
D wo liegt der Fehler? (JTable) Java Basics - Anfänger-Themen 11
D Primzahlen ausgeben. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
M NullPointerException - Fehler beheben, nur, wo liegt er? Java Basics - Anfänger-Themen 13
D Wo liegt der Fehler? Java Basics - Anfänger-Themen 11
F wo liegt der Fehler?? Java Basics - Anfänger-Themen 7
B Class wird nicht gefunde obwohl sie im gleichen Ordner liegt Java Basics - Anfänger-Themen 8
Screen Scanner Arrays wo liegt mein Fehler? Java Basics - Anfänger-Themen 11
Screen Wo liegt der Fehler? Java Basics - Anfänger-Themen 3
G Variable welche in anderer Klasse liegt, verändern. Java Basics - Anfänger-Themen 2
K Wo liegt der Fehler wieder ? Java Basics - Anfänger-Themen 14
I String, Split, match, wo liegt mein Fehler ? Java Basics - Anfänger-Themen 4
K Hallo, woran liegt der Fehler ? Java Basics - Anfänger-Themen 6
M Felder (Wo liegt der Fehler?) Java Basics - Anfänger-Themen 2
P Wo liegt der Fehler? *verzweifel* Java Basics - Anfänger-Themen 10
J Arrays: Wo liegt das Problem? Java Basics - Anfänger-Themen 6
Z Wo liegt der Fehler? Java Basics - Anfänger-Themen 8
S Array bleibt leer, wo liegt mein Fehler? Verzeichnisinhalt s Java Basics - Anfänger-Themen 8
H In welchem Ordner liegt das jar file? Java Basics - Anfänger-Themen 2
M Wo liegt der Quelltext von System.out.println() Java Basics - Anfänger-Themen 3
M JTable updaten woran liegt es bloß? Java Basics - Anfänger-Themen 2
R Wo liegt der Fehler? Java Basics - Anfänger-Themen 10
W Wo liegt denn heir der Fehler? Java Basics - Anfänger-Themen 10
N wo liegt daran der fehler? Java Basics - Anfänger-Themen 6
A wo liegt der fehler im programm? Java Basics - Anfänger-Themen 9
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
D Ist Ableiten hier sinnvoll Java Basics - Anfänger-Themen 5
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
B Dekorator Muster - Irgendwas stimmt hier doch nicht? Java Basics - Anfänger-Themen 4
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
M Was habe ich hier falsch, dass wenn ich z.B.: 11 eingebe mir false zurück gegeben wird? Java Basics - Anfänger-Themen 2
M Kann mir jemand hier die Logik vermitteln? Java Basics - Anfänger-Themen 3
M Wie kann ich hier den Abstand ausgeben? Java Basics - Anfänger-Themen 3
S Wie kann ich bei diesem Code erreichen, das als Ergebnis hier 15 herauskommt? Java Basics - Anfänger-Themen 23
P Weswegen entstehen hier Syntaxfehler? Java Basics - Anfänger-Themen 3
J Wie kann ich hier eine While schleife einbauen? Java Basics - Anfänger-Themen 3
A Wieso bekomme ich hier zwei unterschiedliche Ausgaben? Java Basics - Anfänger-Themen 6
S Was für Aufgaben könnten sich hier hinter verbergen? Java Basics - Anfänger-Themen 5
R Warum werden hier nur die grün und orangen Linien ausgegeben und der Rest unten nicht? Java Basics - Anfänger-Themen 5
R Wie würde hier die if-Anweisung aussehen? Java Basics - Anfänger-Themen 18
S Operatoren i=i++; Was passiert hier? Java Basics - Anfänger-Themen 21
G Warum ist hier ein Lamda-Ausdruck möglich Java Basics - Anfänger-Themen 2
O Was bedeutet das hier 999_983? Java Basics - Anfänger-Themen 2
F Warum ist die Ausgabe hier 1? Java Basics - Anfänger-Themen 4
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
L Collections Ist eine Arraylist hier das richtige? Java Basics - Anfänger-Themen 12
S Unklarer Code (was passiert hier?) Java Basics - Anfänger-Themen 1
R Kann mir hier jemand weiterhelfen? Java Basics - Anfänger-Themen 1
B Wieso wird hier so viel als falsch angezeigt? Java Basics - Anfänger-Themen 2
B Wieso gibt er hier nur die ungeraden Zahlen aus? Java Basics - Anfänger-Themen 5
B Kann mir jemand erklären, warum hier dreimal was ausgegeben wird und nicht nur zweimal? Java Basics - Anfänger-Themen 16
P Compiler-Fehler Wo befindet sich hier der Fehler und warum? Java Basics - Anfänger-Themen 21
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
K Was wird hier nacheinander gemacht? Java Basics - Anfänger-Themen 1
L [ARRAY] Werden hier die Indezes oder die Werte vergliechen? Java Basics - Anfänger-Themen 4
K Was macht hier genau return? Java Basics - Anfänger-Themen 2
V in diesem Forum wurde mir am meisten geholfen, daher eine Frage die hier nicht passt. sry (VB Frage) Java Basics - Anfänger-Themen 3
T boolean, was passiert hier? Java Basics - Anfänger-Themen 4
O euer chat hier Java Basics - Anfänger-Themen 1
R kann mir jemand erklären was hier gemacht wurde? Java Basics - Anfänger-Themen 10
K Wie übergebe ich hier korrekt die Werte Java Basics - Anfänger-Themen 5
B Warum gibst hier Equals false zurück ? Java Basics - Anfänger-Themen 23
V Warum wird hier 200 ausgeliefert? Java Basics - Anfänger-Themen 39
S Klassen Klasse oder nicht Klasse - das ist hier die Frage Java Basics - Anfänger-Themen 6
W Methoden Wie wird eine Methode hier aufgerufen? Java Basics - Anfänger-Themen 5
S wieso Fehlermeldung cannot find symbol hier Java Basics - Anfänger-Themen 10
K Was ist hier Falsch? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben