Zeit und Lust!

flashray

Erfahrenes Mitglied
Hallo Freunde,

ich habe einen einfachen Texteditor programmiert. Hätte vielleicht jemand Zeit und Lust, einen Teil der 15 bis 20 Klassen zu überfliegen. Würde gerne allgemeine Tips und Verbesserungsvorschläge zum Programmaufbau und -Struktur, Programmierstil und ähnlichem erfahren. Ich möchte einfach nur folgendes Erfahren, würdet ihr den Aufbau eines vergleichbaren Programms ähnlich gestalten?, ist die Programmstruktur einigermaßen in Ordnung, oder ist sie völlig daneben?, was ist sehr auffallend negativ oder auch positiv?

Hinweis: Ich erwarte weder noch möchte ich, das jemand durch den Code genau durchgeht, sondern einfach nur mal kurz überfliegt und ein Paar allgemeine Bemerkungen bezüglich seiner Erfahrungen mit der Softwareentwicklung teilt. Ich weiß jeder hat natürlich besseres zu tun, als sich mit meinem lanweiligen Code zu beschäftigen :D .

http://www.qalem.de/notepad/

Vg Erdal
 
Eines vielleicht noch: Nicht das jemand meint, bei einem Programm dieses Umfanges sind Programmiertechniken, Strukturen nicht wichtig. Dieser Editor war mein bisher umfangreichtes Programm. Ich arbeite mich aber Schrittweise voran. Demnächst möchte ich schon größere, umfangreichere Applikationen programmieren. Deswegen ist es für mich schon ziemlich wichtig, was ich bei dieser Applikation sehr negativ oder auch positiv gemacht habe, um feste Grundlagen für weitere, komplexere Projekte zu haben.

Vg Erdal
 
So ich bin gerade dabei mir das ganze mal Anzuschauen, das erste was Auffällt ist das du keine packages benutzt, das ist schon mal sehr schlechter Stil und sollte umbedingt geändert werden, auch wegen Sichtbarkeit der variablen etc... In deinem Fall wäre eine package Struktur wie folgt angebracht als main package de.galern.editor z.b. darunter dann andere packages..

Kleiner Tip am Rande, schau dir mal Maven 1.0.2 an das ist ein Buildtool, das aber imho eine gute Projeektstruktur automatisch erstellt..

Dann das Absolute DON'T DO THAT: bei dem Programm ist ja alles, aber wirklich alles statisch jede Methode und fast jeder Variable, das ist nicht nur schlechter Stil und hat nichts mit OO zu tun, sondern kann auch zu schwerwiegenden Problemen, führen.
Da Statische Methoden/Variablen zwar ihre daseinsberechtigung haben aber nur in sehr seltenen Ausnahmefällen(extrem oft benutze Methode bei denen es keinen Sinn machen würde jedesmal eine neue Instanz zu bilden(Double.parseDouble() z.b.) bei Singeltonpatterns oder bei feststehenden Klassenvariablen)

Tjoa, ich möchte dich nicht entmutigen, aber tue dir selber einen Gefallen und schreib das ganze Ding nochmal, ohne diesen ganzen static Kram, den so wie das Programm jetzt ist kann es nicht bleiben.

Auch solltest du ein Augenmerk auf Abstarktion legen und an geeigneten Stellen Interfaces benutzen das macht späteres ändern/erweitern des Progs einfacher..

So das wars erstmal von meiner Seite, ich hoffe du bist nicht sauer auf mich weil ich dein Prog so auseinander genommen habe, aber die andauernde Verwendung von statischen Methoden geht wirklich nicht, schau dir lieber mal an wie man ein gescheites EventManagement System schreibt...
mfg
elmato
 
Zuletzt bearbeitet:
Danke Elmato,

natürlich bin ich nicht sauer! Vielen Dank, für die Tips.

- Maven (Ist mir neu, kenn ich nicht, werds mir auf jeden Fall anschauen)
- packages (hab ich nicht benutzt, wusste nicht für was es gut sein soll, werd ich nachlesen)
- Eventmanagement System (Kannst du vielleicht noch konkreter benennen, meinst du damit vielleicht propertychangelistener oder vielleicht sowas wie jgoodies bindings)
- Interfaces (Wo soll ich die beispielsweise Benutzen)

Vg Erdal
 
Also packages dienen zum einen der Übersicht und macht es für andere Entwickler leichter die Struktur und Sinn deines Programms zu Verstehen zum anderen gibt es ja auch den s.g. package Scope das heisst wenn due einfach nur eine Variable deklarierst ohne modifier(public/private/proteced) ist diese Variable immer noch im package Sichtbar(bringt imho nichts zumindest habe ich noch nie eine Variable ohne modifier benutzt, lasse mich aber auch gerne belehren..)
Ja mit Eventmanagment System meinte ich sowas wie propertyChangeEvents oder halt auch eigene Listener/Events um Informationen auszutauschen zwischen deinen Klassen.
Zum Thema Interfaces und Abstraktion kann ich dir so auf die schnelle keine guten Tips geben, da muss ich mich erstmal selber hinsetzen und mir Überlegen wie ich die Programm Struktur aufbauen würde dann sieht man recht schnell was man wo und wie Abstact machen kann, ich könntemir Vorstellen das es Sinvoll ist einen Teil der grafischen Elemente Abstract zu machen und diese zu Vererben schau dir doch mal
http://www.tutorials.de/forum/c-c-c...od-java-interfaces-plugin-programmierung.html
an da erklärt Chritian den Sinn und Zweck von Interfaces, vielleicht erklärt sich Thomas auch bereit ein UML Diagramm für einen Editor zu erstellen oder ich mache es wenn ich es auf die Reihe kriege, den gerade Abstraktion und die gescheite Benutzung von Interfaces ist auchso eine Schwachstelle von mir ;)

mfg
elmato
 
Hallo Elmato,

hab meinen Notepad etwas überarbeitet. Die statics habe ich soweit wie möglich rausgehauen. Variablen private, Methoden public definiert bis auf ein Paar Ausnahmen. Weitere getter und setter eingebaut. Dann habe ich packages eingefügt und somit auch einen neue Struktur vergeben.

Maven hab ich jetzt noch nicht benutzt. Da muss ich mich erstmal einwenig einlesen.

Könntest du dir den Code nochmals anschauen und mir mitteilen ob es in etwa deinen Vorstellungen bezüglich der oben genannten Verbesserungen entspricht?

Du hast ja letztes mal etwas von einem Event-Management System gesprochen. Das seien dann etwa propertychangelistener oder eigene listener. Könntest du mir erläutern, was an den action- und mouselistener nicht in Ordnung ist? Wieso sollte ich statt den standartlistener von swing eigene oder nur das propertychangelistener benutzen. Wo liegen die Vorteile? Wenn du von einem Event-Management System sprichst, heißt das auch, das alle Listener in einer Klasse zentral zusammengefasst werden?

http://www.qalem.de/notepad2/


Vg Erdal
 

Anhänge

  • structure.jpg
    structure.jpg
    36,3 KB · Aufrufe: 18
Zuletzt bearbeitet:
Hallo Elmato,

es würde mich sehr freuen, wenn du zu einem dir passenden Zeit den verbesserten Code nochmals kurz anschaust. Es hat natürlich keine Eile. In den nächsten Tagen, am Wochenende, nächste Woche eben wann du "Zeit und Lust" hast.

Die Struktur und der Aufbau dieses Programms ist mir deswegen so wichtig, weil wenn ich das OOP und das Designen hier einwenig hinbekomme ich meine zukünftigeren Programme darauf aufbauen möchte.

Vg Erdal
 
Hallo,

inzwischen habe ich auch die Methodennamen umgeschrieben. Möglichst Präfixe wie set..., get..., show..., hide... und ähnliche verwendet.

http://www.qalem.de/notepad3/

Ich würde mich auch über jeden einzelnen Kommentar von anderen Erfahrenen programmierern freuen. Vielleicht was ich in meiner Implementation vergessen habe, es aber unbedingt zu einem professionellem Programm gehört.


Vg Erdal
 
Zurück