Erst einmal ein Lob dafür, dass du das nicht so stehen lassen willst. Es gibt durchaus Leute, die das so lassen würden, und stolz drauf wären.
Ich würde, wie mymaksimus schon vorgeschlagen hat, mit einer vernünftigen Benennung anfangen - das hilft wirklich.
Das Problem überlanger Methoden ist gewöhnlich, dass sie verschiedene Abstraktionsebenen vermischen, also Details und viel allgemeinere Aktionen vermischen. Um das zu refactorn hilft, die Methode mit zwei, drei Sätzen zu beschreiben (aber wirklich so, dass es ein anderer verstehen kann, also nicht zuviel dabei “voraussetzen”). Damit hast du einen guten Ansatzpunkt, was in der Haupt-Methode stehen sollte. Alles andere schiebst du in Unter-Methoden, die du nach den Teil-Aktionen benennst. Dabei bieten sich vorhandene Strukturen wie for-Schleifen natürlich als Einheit an (vor allem, wenn sie ein einziges “Ergebnis” liefern).
Natürlich sehen Profis wie Bleiglanz solche Möglichkeiten zum Refactoring beim Drüberblinzeln, aber du sollst ja lernen, wie man systematisch an sowas rangeht. Und auch wenn es erst einmal schwer fällt, ist das eine Fähigkeit, die man lernen kann.
UnitTests sind kleine Programmzeilen mit denen man eine Unit (in dem Fall eine Klasse oder sogar nur eine public Funktion) testen kann. Somit kann man feststellen, ob der Code das macht, was er machen soll, ohne das Komplette Programm laufen zu lassen. Hier wird im Gegensatz zum Manuellen durchklicken ganz speziell eine Unit getestet.
Refactorings sind Anpassungen an dem Code, die Fachlich (also von dem Ergebnis her) nichts anderes machen als vor dem Bearbeiten, aber danach sollte der Code übersichtlicher, besser zu lesen, einfacher zu testen sein
unbeabsichtigte fachliche Änderungen wären sowas, wie man macht bei den Anpassungen (Kürzungen, wie du es nanntest) einen Fehler und der Code liefert z.B. auf die frage was ist 1+1 nun nicht mehr 2 sondern 1.
Hat man also nun solche angesprochenen Unit Tests, kann man in dem Code arbeiten und kann danach leicht feststellen, ob der Code noch immer das tut, was er machen soll
So nach dieser kurzen Erklärung, du solltest auf jeden Fall mal die Variablen schöner, leserlicher benennen. Code der sich wiederholt in private Methoden auslagern schau dir dafür mal das hier an Clean Code
Es ist schon ein Stückchen besser, aber trotzdem muss ich nochmal meinen Tip/Hinweis geben, schau dir mal die Prinzipien von Clean Code an. Du hast noch immer viele eigene Code Duplikate. Das wird, jedenfalls bei uns im Projekt den Build (also wenn auf dem Build Server die Applikation durchgebaut wird) auf ROT setzen und das ist nie gut. Anstelle von den Code immer 3 mal aufzuschreiben, kann man das in eine Funktion auslagern und dann ruft man die Funktion mit einem Parameter auf (die muss dann 3 mal aufgerufen werden) aber nicht jeder einzelne Codeschnippsel, wie schon von @Bleiglanz angedeutet.
Du liest eine Datei bzw führst einen Befehl aus, formatierst den String, schreibst den String und das alles 3 mal. Da wäre es wie gesagt einfach daraus eine Funktion zu machen und die die Funktion und den Dateinamen übergeben bekommt. Dadurch wird dein Code lesbarer und ungefär ein drittel so lang.
Java zählt mit zu den dutzend Programmiersprachen, die ich beherrsche
ich würd das gern etwas kürzen, aber ich weiß nicht wie
Ich hab einfach nix mit dem EDT gemacht, wenns einfriert, frierts ein.
Ich sehe schon, dass es hier kleinere Probleme gibt. Beim Java-Quelltext angefangen.
@CyborgBeta : wenn du wirklich was wissen willst, dann verwende längere Variablennamen, erkläre was dein Code eigentlich machen soll - denk doch mal an die Leute die das hier lesen: glaubst du wirklich man würde deinen Code auf Anhieb verstehen? Und sei nicht gleich wieder beleidigt - deine Autoreifen sind sicher
Ob sich jemand anmeldet oder nicht, obliegt jedem selber. Deshalb gibt es den Gast-Account.
Wenn du jemanden nicht ernst nimmst, der als Gast postet, wirst du wohl auch von keinem anderen Hilfe erwarten können (es sei denn, der Gast trollt - aber das trifft auch für angemeldete zu).
die Frage nicht zu verstehen ist keine Auszeichnung, aber zumindest berechtigt,
anderes im noob-Posting habe mir übrigens vorher schon etwas erlaubt zu kürzen,
die Reaktion darauf ist keine richtige, CyborgBeta
die Antwort ist, dass es nicht sehr schlimm ist, zumal wenn es im Test für den eigenen Bedarf funktioniert,
theoretisch kann es aber unterschiedliche Zeilentrenner geben (
),
PrintWriter geht etwas anderes ran, das muss aber nicht automatisch heißen dass besser, je nachdem was man in der Datei haben will,
man kann evtl. PrintWriter passend einstellen, dann hilft das etwas mehr,
genauso kann man auf richtigen Zeilenumbruch bei eigenen Zusammenbau achten, wobei ziemlich manuell mitten im Code unschön,
-> es könnte eine eigene Hintergrundkomponente mit StringBuilder als Basis herauskommen, ebenso konfigurierbar,
nahe an PrintWriter in dieser Hinsicht, getrennt vom Abspeichern,
-> das könnte dann auch gleich eine Methode werden um Code nicht zu wiederholen, es geht immer voran
@CyborgBeta , du gehst ja auch nicht auf Fragen von Registrierten Usern ein, wie schon gleich als erster Post von @Timothy_Truckle gemacht wurde, sondern greifst einen Hilfsbereiten Nutzer gleich an, weswegen er wahrscheinlich garnicht weiter hilft, da du ja keine wirkliche Hilfe von Erfahrenen Entwicklern annehmen willst sondern lieber deine eigene Suppe braust, auf Ratschläge nicht eingehst, leute beleidigst,…
@SlaterB tut mir leid, das du meinen Post Zensieren musstest, ich war nur verärgert, darüber das gute Ratschläge von verschiedenen Nutzern gemacht wurden und @CyborgBeta diese wie eigentlich immer ignoriert und an anderer Stelle großspurig von seinen Javaskills prahlt. Ich gebe zu das war nicht sehr Profesionell.