Discord

  • Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Spigot PlugIn System neuschreiben oder überarbeiten?

KleeSup

Minecrafter
Mitglied seit
15 April 2018
Beiträge
5
Alter
22
Hallo Leute!
Ich arbeite seit Herbst an einem deutschen Faction Server. Ich habe alles komplett selbst programmiert. Die Sache die mich stört ist, dass es aufgrund meines damals fehlenden Wissens über einer Grundstruktur eines Java Projektes mir durch meinen eigenen Code der Spaß am Programmieren für dieses System vergangen ist (vllt. Liegt es auch daran das wir keine Spieler haben... ). Jedenfalls frage ich mich ob ich jetzt dieses riesige System komplett neu schreiben oder überarbeiten soll. Je nachdem, was weniger Arbeit ist und am Ende ein besseres Endprodukt liefert.
Ich hoffe ihr könnt mir einen Rat geben!
Liebe Grüße Ben aka KleeSup
 

LapisMC

Vorarbeiter
Osterei Experte
Mitglied seit
29 März 2014
Beiträge
242
Alter
21
Minecraft
LapisMC
Jedenfalls frage ich mich ob ich jetzt dieses riesige System komplett neu schreiben oder überarbeiten soll.
Welche Kenntnisse dir bei der Entwicklung gefehlt haben, weiß ich jetzt natürlich nicht. Deiner Beschreibung nach gehe ich aber davon aus, dass es sich (auch) um wichtige Aspekte wie Objektorientierung, Trennung von Zuständigkeiten, richtige Datenmodellierung und natürlich einen geordneten Entwicklungsprozess handelt. Erfahrungsgemäß sind das zumindest die Dinge, die angehenden Plugin-Entwicklern oft fehlen.

Wenn das der Fall ist, kann ich mir auch vorstellen, wie das Projekt aussieht - und empfehle dir, mit der Entwicklung noch einmal von vorne anzufangen. Der Grund liegt auf der Hand: Die Softwarearchitektur bildet die Basis für die Implementierung und auch alle zukünftigen Änderungen und Erweiterungen. Schlechte Softwarearchitektur sorgt meist nicht nur für Performanceprobleme sowie Fehleranfälligkeit (was du dann jetzt alles ausbügeln müsstest), sondern behindert aus Mangel an Wartbarkeit eben auch die weitere Entwicklung.

Bei einer Überarbeitung müsstest du also so viel ändern, dass diese fast einer Neuentwicklung gleichkäme. Dies wäre wahrscheinlich sogar langsamer, da du dich erst wieder in die alte Codebasis einarbeiten müsstest, was sich aus den genannten Gründen unnötig schwer gestalten würde.
Die Komponenten des alten Systems, die brauchbar sind und sich ohne größeren Aufwand in ein überarbeitetes System integrieren lassen (falls überhaupt vorhanden), würden den erwähnten Mehraufwand nicht ausgleichen. Bei einer Neuentwicklung wäre es zudem auch möglich, solche Komponenten zu übernehmen. Es funktioniert meist auch deutlich besser, einzelne alte Komponenten in ein gut strukturiertes Softwaresystem zu integrieren.

Solltest du dich jetzt trotzdem für eine Überarbeitung entscheiden, musst du aber auch bedenken, was das in Zukunft für weitere Änderungen bedeutet. Dann ergibt sich wieder das gleiche Problem; die ungeeignete Grundstruktur des Projekts wird dich bei jedem neuen Feature und jedem Bugfix verfolgen. Das führt im Endeffekt natürlich wieder zu noch mehr Zeitaufwand.

Meine Einschätzung nach wird also eine Neuentwicklung des Systems, egal wie "riesig" es ist, Zeit und Arbeit sparen und ein besseres Ergebnis liefern. Das setzt aber natürlich voraus, dass du die erforderlichen Kenntnisse auf dem Gebiet der Softwareentwicklung sowie der Java-Programmierung mittlerweile auch wirklich besitzt und die Entwicklung von Anfang an richtig angehst.
 
Zuletzt bearbeitet:

KleeSup

Minecrafter
Mitglied seit
15 April 2018
Beiträge
5
Alter
22
Welche Kenntnisse dir bei der Entwicklung gefehlt haben, weiß ich jetzt natürlich nicht. Deiner Beschreibung nach gehe ich aber davon aus, dass es sich (auch) um wichtige Aspekte wie Objektorientierung, Trennung von Zuständigkeiten, richtige Datenmodellierung und natürlich einen geordneten Entwicklungsprozess handelt. Erfahrungsgemäß sind das zumindest die Dinge, die angehenden Plugin-Entwicklern oft fehlen.

Wenn das der Fall ist, kann ich mir auch vorstellen, wie das Projekt aussieht - und empfehle dir, mit der Entwicklung noch einmal von vorne anzufangen. Der Grund liegt auf der Hand: Die Softwarearchitektur bildet die Basis für die Implementierung und auch alle zukünftigen Änderungen und Erweiterungen. Schlechte Softwarearchitektur sorgt meist nicht nur für Performanceprobleme sowie Fehleranfälligkeit (was du dann jetzt alles ausbügeln müsstest), sondern behindert aus Mangel an Wartbarkeit eben auch die weitere Entwicklung.

Bei einer Überarbeitung müsstest du also so viel ändern, dass diese fast einer Neuentwicklung gleichkäme. Dies wäre wahrscheinlich sogar langsamer, da du dich erst wieder in die alte Codebasis einarbeiten müsstest, was sich aus den genannten Gründen unnötig schwer gestalten würde.
Die Komponenten des alten Systems, die brauchbar sind und sich ohne größeren Aufwand in ein überarbeitetes System integrieren lassen (falls überhaupt vorhanden), würden den erwähnten Mehraufwand nicht ausgleichen. Bei einer Neuentwicklung wäre es zudem auch möglich, solche Komponenten zu übernehmen. Es funktioniert meist auch deutlich besser, einzelne alte Komponenten in ein gut strukturiertes Softwaresystem zu integrieren.

Solltest du dich jetzt trotzdem für eine Überarbeitung entscheiden, musst du aber auch bedenken, was das in Zukunft für weitere Änderungen bedeutet. Dann ergibt sich wieder das gleiche Problem; die ungeeignete Grundstruktur des Projekts wird dich bei jedem neuen Feature und jedem Bugfix verfolgen. Das führt im Endeffekt natürlich wieder zu noch mehr Zeitaufwand.

Meine Einschätzung nach wird also eine Neuentwicklung des Systems, egal wie "riesig" es ist, Zeit und Arbeit sparen und ein besseres Ergebnis liefern. Das setzt aber natürlich voraus, dass du die erforderlichen Kenntnisse auf dem Gebiet der Softwareentwicklung sowie der Java-Programmierung mittlerweile auch wirklich besitzt und die Entwicklung von Anfang an richtig angehst.
Vielen Dank für deinen Kommentar! Ja tatsächlich habe ich damals alles verkackt was du oben genannt hast (JEDE Methode bei mir in den Grundklassen ist Static... ). Ich werde mich wahrscheinlich dazu entscheiden, dass ganze neu zu schreiben. Einen schönen Tag noch!
 

LapisMC

Vorarbeiter
Osterei Experte
Mitglied seit
29 März 2014
Beiträge
242
Alter
21
Minecraft
LapisMC
JEDE Methode bei mir in den Grundklassen ist Static...
Genau an sowas habe ich bei deiner Beschreibung auch gedacht. Das alles umzuschreiben und eine brauchbare Struktur daraus zu machen, würde mit großer Sicherheit länger dauern, als es nochmal neu (und dann eben richtig) zu machen.

Generell freut es mich aber, dass du deine früheren Fehler einsiehst und offensichtlich daraus gelernt hast, das sieht man bei Pluginentwicklern in der Minecraft-Community nicht oft.
 

Baba43

Ehem. Teammitglied
Ehem. Teammitglied
Mitglied seit
5 November 2012
Beiträge
826
Du solltest jedoch bedenken, dass Du als Entwickler immer besser wirst und neue Lösungen für Deine Probleme findest, weshalb der Gedanke "Man, was habe ich hier für einen Mist zusammenprogrammiert" Dich mehr oder weniger dauerhaft begleiten wird. Das alleine sollte also kein Kriterium dafür sein, die vorhandene Arbeit komplett über Bord zu werfen.
 

KleeSup

Minecrafter
Mitglied seit
15 April 2018
Beiträge
5
Alter
22
Du solltest jedoch bedenken, dass Du als Entwickler immer besser wirst und neue Lösungen für Deine Probleme findest, weshalb der Gedanke "Man, was habe ich hier für einen Mist zusammenprogrammiert" Dich mehr oder weniger dauerhaft begleiten wird. Das alleine sollte also kein Kriterium dafür sein, die vorhandene Arbeit komplett über Bord zu werfen.
Wenn du das sehen würdest was ich da veranstaltet habe würdest du Augenkrebs kriegen.... Na klar ist man später immer einer anderen Meinung, aber das da geht garnicht xD
 
Oben