Best Practice Vorgehensweise bestehenden Code/Programm verschönern

Fab1

Top Contributor
Hallo Zusammen,

wie ich im Titel bereits versucht habe zu erklären, geht es um das verschönern von Code. Mir liegt ein Programm vor, welches mit der Zeit immer und immer wieder erweitert wurde, mit dem Ziel das es weiterhin läuft. Das heißt es wurde nicht viel Wert auf Kommentare, Übersichtlichkeit, Wiederverwendbarkeit, Erweiterbarkeit o.ä. gelegt.

Nun wurde, bzw. werde ich darauf angesetzt, mir das ganze doch mal anzuschauen und es besser zu machen. :)

Bisher hab ich nicht viel Erfahrung im mit dem Lesen von fremden Code und würde mich deswegen über ein paar Tipps zur Vorgehensweise freuen. Eventuell gibt es hier ja ein paar Schritte, mit denen man erstmal anfangen sollte.
Beispielsweise erstmal alles kommentieren oder erstmal die wichtigsten Klassen kommentieren usw. Ich denke ihr wisst was ich meine, ansonsten lasst es mich wissen.

Vielen Dank und schöne Grüße

Fabi
 
S

SlaterB

Gast
der wichtigste Fehler/ Unschönheit, der mir immer und überall begegnet, ist doppelter Code,
z.B. eine 20zeilige Methode kopiert um in der neuen Variante 2 Zeilen einzufügen statt alternativ ein Parameter, und sei es ein boolean, mit if-Block,

muss man irgendwann den Code ändern, ist alles doppelt zu machen (oder schlimmer: zur Hälfte vergessen),
kommen noch mehr Varianten, werden aus 2 Methoden vielleicht schon 4 usw.

Parameter/ Unterscheidungen sind selber auch nicht unbedenklich, können in Massen schlimm sein,
aber darauf treffe ich persönlich wiederum selten
 
G

Gast2

Gast
Eine undankbare Aufgabe... ;)

1) Als allererstes würde ich die Testabdeckung untersuchen... Wenn du irgendetwas änderst solltest du auch garantieren können dass die Änderungen nichts kaputt gemacht haben.

2) Dokumentieren der Architektur, Pakete, Klassen und öffentlichen Methoden ist nie falsch. Ich würde bei der High Level Architektur anfangen und mich dann runter arbeiten.

3) Rein kosmetische Änderungen würde ich gar nicht machen, imho reine Zeitverschwendung.

4) Vor einem Review solltest du dir Standardliteratur zu Clean Code und Refactoring anschauen. Tips dazu: ("Robert C. Martin: Clean Code"; "Steve McConnell: Code Complete", "Martin Fowler: Refactoring")

5) Lass den Rechner Vorarbeit leisten: Benutze Static Code Analyzer wie Checkstyle oder PMT.

6) "Joshua Bloch: Effective Java" hat viele gute Tips um Code zu verbessern. Leider sind viele Dinge nicht ohne größere Designänderungen machenbar, aber einiges wie final Parameter, mutuable/immutable usw ist meist schon recht einfach machbar
 
Zuletzt bearbeitet von einem Moderator:

turtle

Top Contributor
[EDIT]Wie bereits richtig erwähnt musst du zunächst entsprechende Tests schreiben, damit du sicher bist, das dein neuerer, "schönerer" Code immer noch das tut, was der alte tat!![/EDIT]
Das ist eine undankbare und teilweise aufwendige Aufgabe und häufig hat kein Mensch/Chef dafür Verständnis diesen Aufwand zu bezahlen.

Wenn das nach den Tests durch ist, kannst du beliebig den Code refactoren bis du bei einem Zustand bist, das du (oder deine Teammitglieder) zufrieden sind.

Natürlich gibt es eine Menge an Best-practices, worin sich guter Code auszeichnet und es wurden schon einige erwähnt (DRY-don't-repeat-yourself). Es existiert auch eine Fülle an Büchern, die auch erwähnt wurden, möchte aber noch auf das PDF_Dokument Clean Code hinweisen.
 
S

Spacerat

Gast
Also praktischerweise kann man grössere Programmabschnitte möglicherweise ja erst mal in kleinere übersichtlichere Methoden und deren Aufrufe unterteilen (so löst sich SlateB's Sorge um doppelten Code auch relativ schnell in Rauch auf ;)). Als nächstes schaut man, ob man von den neu entstandenen Methoden einige utilisieren kann, dass wäre genau dann der Fall, wenn sich das von SlaterB angesprochene Problem über X-Klassen und Y-Pakete zieht. Was man dabei, sofern man in einem Team arbeitet, nicht vergessen darf: Jede neu entstandene Methode unabhängig von ihrer Sichtbarkeit gnadenlos dokumentieren.
Wenn dann alles soweit läuft und nun auch viel übersichtlicher ist, kann man sich um die evtl. verloren gegangene (die z.B. dadurch entsteht, wenn man in den neu implementierten Methoden öfters als zuvor neue Instanzen irgendwelcher Objekte zurückgeben muss) oder einer besseren Performance kümmern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Vorgehensweise unklar Allgemeine Java-Themen 23
G Softwareentwicklung Vorgehensweise Allgemeine Java-Themen 8
C Vorgehensweise bei der Hardwareprogrammierung Allgemeine Java-Themen 16
S Vorgehensweise? Allgemeine Java-Themen 4
E Architekturfrage Vorgehensweise MVC Allgemeine Java-Themen 2
J Frage zur Vorgehensweise des Gargabe Collectors. Allgemeine Java-Themen 3
K daten in bestehenden array hinzufügen Allgemeine Java-Themen 7
M Unsicher, ob das Code richtig ist Allgemeine Java-Themen 4
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
schemil053 Methoden Code-Verbesserung Allgemeine Java-Themen 2
D Webarchive (war): Code verschleiern Allgemeine Java-Themen 7
D Compiler-Fehler child process exited with code 1 Allgemeine Java-Themen 1
Queenman Interface Mein Microsoft Visual Studio Code zeigt komische Dinge & Menüs an Allgemeine Java-Themen 9
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
berserkerdq2 Versteht jemand, was diese beiden Zahlen bei dem IJVM Code zu bedeuten haben? Allgemeine Java-Themen 10
OnDemand Releaseversion Tag in Code Allgemeine Java-Themen 5
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
F Code auslagern Allgemeine Java-Themen 5
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
A code wird nicht ausgeführt Allgemeine Java-Themen 3
B Bitte um Code Erklärung Allgemeine Java-Themen 5
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
OnDemand Clean Code oder Allgemeine Java-Themen 5
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
J Simple Date Format Alternativen bitte um Code Allgemeine Java-Themen 14
AGW in Java-Code plötzlich ein paar Wörter in Rot Allgemeine Java-Themen 2
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
H Precompilierten code ansehen Allgemeine Java-Themen 3
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
L Ausgabe von in Echtzeit ausgeführten Code Allgemeine Java-Themen 9
Drachenbauer Wie kann ich die menge an code reduzieren? Allgemeine Java-Themen 28
Thallius Warum ist dieser Code OS abhängig? Allgemeine Java-Themen 10
S Code Erklärung Allgemeine Java-Themen 21
B Pausem im Code Allgemeine Java-Themen 2
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
L Eclipse Java Code ausführen Allgemeine Java-Themen 18
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
F Code in Klassen bringen Allgemeine Java-Themen 4
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
F Klassen Spaghetti Code Vermeidung Allgemeine Java-Themen 16
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
J Code Page characters darstellen Allgemeine Java-Themen 12
J wie sollte man sinnvoll seinen Code aufteilen Allgemeine Java-Themen 6
I Python Code in Java Code Allgemeine Java-Themen 9
M Java (GUI) Code verdoppeln oder anzeige mehrmals anzeigen? Allgemeine Java-Themen 8
N Wie öffne ich einen runtergeladadenen Code in IntelliJ Allgemeine Java-Themen 3
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
O Standard library nativer C code Allgemeine Java-Themen 1
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
S Java Editor Bekomme bei der Code-Vervollständigung die Zeichen ​ Allgemeine Java-Themen 3
N Morse Code decoder Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
S Eclipse exit code 805306369 Allgemeine Java-Themen 1
Pataraca Vererbung Code einbinden Allgemeine Java-Themen 3
Developer_X Website HTML Code von HTTPS URL laden Allgemeine Java-Themen 0
S Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? Allgemeine Java-Themen 20
S Code 'innerhalb' des synchronen Bereichs einer BlockingQueue ausfuehren..? Allgemeine Java-Themen 7
F Verständlichkeitsproblem bei Java Code?! Allgemeine Java-Themen 2
G Eclipse Eclipse: Unreachable code Allgemeine Java-Themen 16
P Java Android Code in IOS compilieren? Allgemeine Java-Themen 9
C Code vereinfachen Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
R Java-Code für folgene Aufgabe? Allgemeine Java-Themen 8
Prafy Best Practice Code Refaktorisierung Allgemeine Java-Themen 7
WetWer Was bedeutet/macht ein Exit-Code Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
perlenfischer1984 HTML Code decodieren Allgemeine Java-Themen 2
C ASCII-Code in Java Allgemeine Java-Themen 1
J Java-Code in DLL packen Allgemeine Java-Themen 5
J LWJGL 3 Error Code 1282 Allgemeine Java-Themen 4
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
A Frage zu meinem Code Allgemeine Java-Themen 2
B Code generierung Velocity Templates Telosys Allgemeine Java-Themen 1
E Fehlermeldung vor dem Programm code Allgemeine Java-Themen 1
B JAVA - mehrere Clienten gleichzeitig starten. Nicht bei Code! Allgemeine Java-Themen 3
Fischkralle Ausführen von fremden Code Allgemeine Java-Themen 14
wolfgang63 Code snipped Software Allgemeine Java-Themen 1
L Eclipse Editieren des Code templates für Override methods Allgemeine Java-Themen 2
J Java code "plugin" fähig machen Allgemeine Java-Themen 4
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
Thallius Wie verstecke ich meinen private Key am besten im Code? Allgemeine Java-Themen 10
A Thread: Code paralell ausführen in mehreren Instanzen Allgemeine Java-Themen 1
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
N HTTP response code: 403 Allgemeine Java-Themen 3
D Code bitte mit 19 stelligen Zahlen kompatibel machen Allgemeine Java-Themen 5
D Java Compiler code referencen Allgemeine Java-Themen 0
B Fehler im Java-Code Allgemeine Java-Themen 4
A PHP-Code zu Java-Code Allgemeine Java-Themen 5
M Code läuft unter windows aber nicht unter Linux Allgemeine Java-Themen 6
X Was macht folgender Code!? Allgemeine Java-Themen 6
K Code zu einem Projekt entschluesseln Allgemeine Java-Themen 15
H Java Leistungssteigerung durch Code Anpassung Allgemeine Java-Themen 5
M Code optimieren Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben