Hab mal eben kurz durch den Quelltext gestöbert. Mir sind ein paar Dinge aufgefallen die du (oder ihr, keine Ahnung ob du das Projekt jetzt noch alleine machst) vielleicht beherzigen solltest.
- Leg dir einheitlichere Conventions zu. Ich würde dabei zu den Standard Java Code Guidelines raten. Dann sieht dein Programm wie 99% aller anderen Java Programme aus, und wenn später mal jemand helfen möchte fällt das leichter. Aber egal welche Codeconventions du auch für dich entscheidest, vermische sie nicht. Einmal sehe ich multi_word_variable und einmal multiWordVariable. Auch sind Methodennamen wie _init() nicht gerade gängig. Der _ vor der Methode gibt mir das Gefühl die Methode sei irgendwie nur intern wichtig, aber dann ist die Methode public. Warum also der _? Mag unwichtig klingen, ist es aber nicht.
- Widerstehe dem Drang alles selber zu schreiben. Ich sehe da drin eine Klasse zum auslesen von Ini-Files. Die Properties Klassen aus Java machen genau das. Warum also neu schreiben?
- Das Userinterface sieht stark handcodiert aus. Nutz lieber einen GUI-Editor. Der spart dir enorm viel Zeit, und wenn er Databinding unterstützt umso mehr.
- Wirf Exceptions. Eine Methode wie "public abstract boolean finishEditing();" die false im Fehlerfall zurückliefert ist suboptimal. Wenn du schon keine Exceptions werfen möchtest (warum auch immer, die sind nämlich eine viel schönere Lösung zur Weitergabe von Fehlern), liefer wenigstens ein Fehlerobjekt zurück wo du Informationen über den Fehler lieferst. Es sieht ganz so aus als würdest du die Fehlerbehandlung in der finishEditing Methode selber machen müssen, und nur für den Caller den Hinweis geben, dass etwas schief gelaufen ist. Code Smell vom feinsten.
Achja, und benutze Exceptions richtig.
In einem Konstruktur ist einfach nur scheusslicher Code. Man fängt eine Exception immer nur dort wo man sie auch richtig behandeln kann. Was du machst ist: Die Exception gleich an der erst besten Stelle zu fangen, und dann die Objektinitialisierung abbrechen. Derjenige der eine Instanz von der Klasse erstellt hat somit erstmal gar keinen Plan ob die Instanz überhaupt richtig erstellt wurde und arbeitet evtl mit einem unfertigen Objekt weiter ohne es zu wissen. Ganz übel.- Pluginsysteme sind äußerst kompliziert zu schreiben. Greif lieber auf ein System wie das NetBeans Module system oder OSGi zurück.
- Schreib UnitTests. Die sind nicht nur ein guter Indikator für sauberen Code, sondern helfen dir auch dabei Stellen zu identifizieren wo du durch eine Änderung an existierendem Code, einen Fehler an anderen Stellen produziert hast, ohne nach jeder kleinen Änderung sämtliche Stellen manuell neu testen zu müssen.
- Verwende Ant oder Maven zum Bauen des Projektes. Damit können auch Leute wie ich, die kein Eclipse (vermute ich einmal) verwenden, dein Projekt bauen. Und du kannst CI Tools wie Jenkins verwenden.