Überarbeitetes GUI-Tool, das 2016 mit Java8 + JavaFX erstellt wurde

Inhalt

Hintergrund

Probleme hatte ich

Problemzerlegung

Was war wichtig?

Was ich getan habe / was ich konnte

Endlich meinen Wunsch am 11. Mai 2020 erfüllt

Funktioniert jetzt mit benutzerdefiniertem JRE

Automatische Erstellung und Freigabe mit CI

image.png

Automatisches Format

Vor dem Erstellen mit [google-java-format-gradle-plugin] in das Format geändert (https://github.com/sherter/google-java-format-gradle-plugin)

Visualisierung der Testabdeckung

Code-Diät

Vor dem Refactoring

$ find src/ -name '*.java' | xargs wc -l
       31 src/application/fileList/FileListHBox.java
      189 src/application/fileList/FileListHBoxController.java
       31 src/application/imageViewer/ImageViewerBorderPane.java
      288 src/application/imageViewer/ImageViewerBorderPaneController.java
       92 src/application/Main.java
      471 src/application/MainController.java
       44 src/application/options/Numberings.java
      104 src/application/options/Options.java
       40 src/application/options/OptionsStage.java
      165 src/application/options/OptionsStageController.java
       69 src/application/options/Separators.java
       36 src/application/outputViewer/MyButton.java
      122 src/application/outputViewer/MyImageView.java
       33 src/application/outputViewer/OutputViewerAnchorPane.java
      130 src/application/outputViewer/OutputViewerAnchorPaneController.java
       25 src/application/TKoolVersion.java
       29 src/application/version/VersionStage.java
       42 src/application/version/VersionStageController.java
     1941 total

Nach Fertigstellung

# main
$ find src/main/java/ -name '*.java' | xargs wc -l
         8 src/main/java/com/jiro4989/tkfm/data/CropSize.java
        42 src/main/java/com/jiro4989/tkfm/data/Position.java
        38 src/main/java/com/jiro4989/tkfm/data/Rectangle.java
        67 src/main/java/com/jiro4989/tkfm/Main.java
       422 src/main/java/com/jiro4989/tkfm/MainController.java
       235 src/main/java/com/jiro4989/tkfm/model/CroppingImageModel.java
        21 src/main/java/com/jiro4989/tkfm/model/ImageFileModel.java
        52 src/main/java/com/jiro4989/tkfm/model/ImageFilesModel.java
       211 src/main/java/com/jiro4989/tkfm/model/PropertiesModel.java
       133 src/main/java/com/jiro4989/tkfm/model/TileImageModel.java
        15 src/main/java/com/jiro4989/tkfm/util/ImageUtil.java
         6 src/main/java/com/jiro4989/tkfm/Version.java
      1250 total

# test
$ find src/test -name '*.java' | xargs wc -l
        13 src/test/java/com/jiro4989/tkfm/data/CropSizeTest.java
        29 src/test/java/com/jiro4989/tkfm/data/PositionTest.java
        26 src/test/java/com/jiro4989/tkfm/data/RectangleTest.java
       212 src/test/java/com/jiro4989/tkfm/model/CroppingImageModelTest.java
        28 src/test/java/com/jiro4989/tkfm/model/ImageFileModelTest.java
        64 src/test/java/com/jiro4989/tkfm/model/ImageFilesModelTest.java
       143 src/test/java/com/jiro4989/tkfm/model/PropertiesModelTest.java
       120 src/test/java/com/jiro4989/tkfm/model/TileImageModelTest.java
        43 src/test/java/com/jiro4989/tkfm/util/ImageUtilTest.java
        13 src/test/java/com/jiro4989/tkfm/VersionTest.java
       691 total

Wartung des Testcodes

Zeit genommen

image.png

Eine schwere Zeit haben

Ich bin nicht dumm, unter den Werkzeugen zu leiden, die ich gemacht habe (lächerlich)

gradle

JavaFX-Trennungsproblem (jmods)

Benutzerdefinierte JRE

Ich habe keinen Quellcode für meine Bibliothek

Impressionen

Ich bin froh, dass ich es getan habe

Reflexion vor 4 Jahren

von jetzt an

Zusammenfassung

Wenn ich das von Anfang an getan hätte, hätte ich kein so schmerzhaftes Gefühl gehabt ...

das ist alles

Recommended Posts

Überarbeitetes GUI-Tool, das 2016 mit Java8 + JavaFX erstellt wurde
Machen Sie mit JavaFX erstellte Kalender-Gadgets mit Java SE 9 kompatibel
Ich habe ein Roulette in Java gemacht.
JavaFX-Umgebungskonstruktion in Java 13
Morphologische Analyse in Java mit Kuromoji
Ich habe mit Swing eine GUI erstellt
Ich habe eine Anmerkung in Java gemacht.
Altersschätzspiel mit Java gemacht
Tweak Markdown mit Java Flexmark-Java
Beispielautomat mit Java
Führen Sie in Java8 geschriebene Anwendungen in Java6 aus
Parallelitätsmethode in Java mit grundlegendem Beispiel
Beispiel eines mit Java hergestellten Verkaufsautomaten (Klassifizierung)
Lesen Sie die xlsx-Datei in Java mit Selenium
Teilen Sie eine Zeichenfolge in Java mit ". (Dot)"
Verkaufsautomat mit Java (domänengesteuert)
Behandeln Sie große JSON mit Java Lambda
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
Erstellen Sie eine CSR mit erweiterten Informationen in Java
Hallo Welt mit JavaFX 11 (OpenJFX) von Liberica JDK 11
Führen Sie eine statische Code-Analyse mit Checkstyle mit Java + Gradle durch
Einfaches Hindernisrennen mit Java-Verarbeitung
Textextraktion in Java aus PDF mit pdfbox-2.0.8
Ich habe ein Janken-Spiel in Java (CLI) gemacht.
Üben Sie die Arbeit mit Unicode-Ersatzpaaren in Java
[JAVA] [Spring] [MyBatis] Verwenden Sie IN () mit SQL Builder
Verschlüsseln / Entschlüsseln mit AES256 in PHP und Java
Programmierung mit dem direkten Summentyp in Java (Nachrichten)
Kommen Sie mit Java-Containern in Cloud Run zurecht
Partisierung in Java
Änderungen in Java 11
HelloFX mit JavaFX
Java GUI Beispiel
Janken in Java
Umfangsrate in Java
FizzBuzz in Java
Ich habe ein einfaches Berechnungsproblemspiel in Java gemacht
Aufrufen von Funktionen in großen Mengen mit Java Reflection
Fügen Sie das Bild mit der statischen Java-Methode in die JAR-Datei ein
Implementieren Sie Singleton mit Enum schnell in Java
Adressiert, da Azure-Funktionen in Java nicht mehr funktionieren
Ausgabe true mit if (a == 1 && a == 2 && a == 3) in Java (Invisible Identifier)
Bereiten Sie die Umgebung für Java11 und JavaFx mit Ubuntu 18.4 vor
Überprüfen Sie die Abdeckung mit Codecov in der Java + Gradle + Wercker-Konfiguration
Gesichtserkennungs-App mit Amazon Rekognition und Java
Ich habe versucht, ein Programm in Java zu erstellen, das das Problem des Handlungsreisenden mit einem genetischen Algorithmus löst