Outil GUI refactorisé réalisé avec Java8 + JavaFX en 2016

Contenu

Contexte

Problèmes que j'ai eu

Décomposition du problème

Ce qui était important

Ce que j'ai fait / ce que j'ai pu faire

Finalement réalisé mon souhait le 11 mai 2020

Fonctionne désormais avec JRE personnalisé

Construction et publication automatiques avec CI

image.png

Format automatique

Changement de format avant la compilation avec google-java-format-gradle-plugin

Visualisation de la couverture des tests

Régime de code

Avant de refactoriser

$ 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

Après achèvement

# 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

Maintenance du code de test

Temps pris

image.png

Avoir du mal

Je ne suis pas stupide de souffrir des outils que j'ai fabriqués (ridicule)

gradle

Problème de séparation JavaFX (jmods)

JRE personnalisé

Je n'ai pas le code source de ma bibliothèque

Impressions

Je suis content de l'avoir fait

Reflection il y a 4 ans

à partir de maintenant

Résumé

Si j'avais fait ça depuis le début, je n'aurais pas eu une sensation aussi douloureuse ...

c'est tout

Recommended Posts

Outil GUI refactorisé réalisé avec Java8 + JavaFX en 2016
Rendre les gadgets de calendrier créés avec JavaFX compatibles avec Java SE 9
J'ai fait une roulette à Java.
Construction de l'environnement JavaFX dans Java 13
Analyse morphologique en Java avec Kuromoji
J'ai créé une interface graphique avec Swing
J'ai fait une annotation en Java.
Jeu de devinettes d'âge réalisé avec Java
Tweak Markdown avec Java flexmark-java
Distributeur automatique d'échantillons fabriqué avec Java
Exécuter des applications écrites en Java8 en Java6
Méthode de concurrence en Java avec exemple de base
Échantillon de distributeur automatique fabriqué avec Java (classification)
Lire le fichier xlsx en Java avec Selenium
Diviser une chaîne avec ". (Dot)" en Java
Distributeur automatique fabriqué avec Java (piloté par domaine)
Gérez d'énormes JSON avec Java Lambda
J'ai créé un programme de jugement des nombres premiers en Java
Lire une chaîne dans un fichier PDF avec Java
Créer un CSR avec des informations étendues en Java
Hello World avec JavaFX 11 (OpenJFX) de Liberica JDK 11
Analyse de code statique par Checkstyle avec Java + Gradle
Course d'obstacles facile avec traitement pour Java
Extraction de texte en Java à partir de PDF avec pdfbox-2.0.8
J'ai créé un jeu Janken en Java (CLI)
Entraînez-vous à travailler avec des paires de substitution Unicode en Java
[JAVA] [Spring] [MyBatis] Utiliser IN () avec SQL Builder
Crypter / décrypter avec AES256 en PHP et Java
Programmation utilisant le type de somme directe en Java (news)
S'entendre avec les conteneurs Java dans Cloud Run
Partition en Java
Changements dans Java 11
HelloFX avec JavaFX
Exemple d'interface graphique Java
Janken à Java
Taux circonférentiel à Java
FizzBuzz en Java
J'ai fait un jeu de problèmes de calcul simple en Java
Comment appeler des fonctions en bloc avec la réflexion Java
Inclure l'image dans le fichier jar avec la méthode statique java
Implémentez rapidement singleton avec enum en Java
Résolution du problème lorsque Azure Functions a cessé de fonctionner en Java
Sortie true avec if (a == 1 && a == 2 && a == 3) en Java (identifiant invisible)
Préparer l'environnement pour java11 et javaFx avec Ubuntu 18.4
Vérifiez la couverture avec Codecov dans la configuration Java + Gradle + Wercker
Application de reconnaissance faciale conçue avec Amazon Rekognition et Java
J'ai essayé de créer un programme en Java qui résout le problème du voyageur de commerce avec un algorithme génétique