Je veux juger de la nécessité de tester en comparant les différences des fichiers de classe lors de la refactorisation de Java.

Je veux juger de la nécessité de tester en comparant les différences des fichiers de classe lors de la refactorisation de Java.

Histoire de refactorisation de la version sans tester plus de 200 000 lignes de code de base Après avoir lu cet article, je me suis demandé si Java pouvait faire de même avec un fichier de classe.

Quant au contexte de mes recherches, je gère moi-même Java au travail. C'est parce que je voulais refactoriser, mais je voulais réduire au maximum le nombre d'étapes.

Procédure d'enquête

Nous comparerons la valeur de hachage (SHA1) du fichier de classe compilé avec divers changements basés sur le code source standard. J'ai utilisé la commande certutil -hashfile pour obtenir la valeur de hachage. image.png

Code source de référence

Main.java


import java.util.Arrays;
import java.util.List;

public class Main {
    /**
     * test
     */
    public static void test() {
        System.out.println("test");
    }

    /**
     * main
     * @param args
     */
    public static void main(String[] args) {
        List<String> list = Arrays.asList("a", "b", "c");
        System.out.println(list);
        System.out.println("main");
        test();
    }

}

Valeur de hachage (SHA1): b38492ff5641fa0f074a82ca5f397c7ba7f3575d

La valeur de hachage du fichier Main.class compilé à partir de Main.java est comme ci-dessus. Comparez cela avec les différences entre les fichiers après diverses modifications.

Résumé des résultats de l'enquête

Le contenu de l'enquête étant long, j'écrirai à partir des résultats et des conclusions.

Il y avait une différence dans la valeur de hachage (SHA1) du fichier de classe

--Ajouter du code --Ajouter un commentaire (nouvelle ligne) --Ajouter une ligne vierge

Il n'y avait aucune différence dans la valeur de hachage (SHA1) du fichier de classe

Conclusion

** Il n'y avait aucune différence dans la valeur de hachage (SHA1) du fichier de classe ** Concernant le changement, il semble que vous puissiez dire "OK sans tester" en comparant la différence du fichier de classe. En particulier, changer le retrait a tendance à causer une grande différence dans le code source, donc j'ai pensé que ce serait bien si je pouvais dire "Comparez les fichiers de classe et il n'y a pas de différence, donc c'est OK".

enquête

Ajouter du code

Main.java


import java.util.Arrays;
import java.util.List;

public class Main {
    /**
     * test
     */
    public static void test() {
        System.out.println("test"); System.out.println("test2");
    }

    /**
     * main
     * @param args
     */
    public static void main(String[] args) {
        List<String> list = Arrays.asList("a", "b", "c");
        System.out.println(list);
        System.out.println("main");
        test();
    }

}

Valeur de hachage (SHA1): 2356a12ac1ca0147356c1eb9824bdacf94e5eaac

Modifier l'ordre d'importation

Main.java


import java.util.List;
import java.util.Arrays;

public class Main {
    /**
     * test
     */
    public static void test() {
        System.out.println("test");
    }

    /**
     * main
     * @param args
     */
    public static void main(String[] args) {
        List<String> list = Arrays.asList("a", "b", "c");
        System.out.println(list);
        System.out.println("main");
        test();
    }

}

Valeur de hachage (SHA1): b38492ff5641fa0f074a82ca5f397c7ba7f3575d

Ajouter un commentaire (ligne existante)

Main.java


import java.util.Arrays;
import java.util.List;

public class Main {
    /**
     * test
     */
    public static void test() {
        System.out.println("test");
    }

    /**
     * main addcomment
     * @param args
     */
    public static void main(String[] args) {
        List<String> list = Arrays.asList("a", "b", "c");
        System.out.println(list);
        System.out.println("main");
        test();
    }

}

Valeur de hachage (SHA1): b38492ff5641fa0f074a82ca5f397c7ba7f3575d

Ajouter un commentaire (nouvelle ligne)

Main.java


import java.util.Arrays;
import java.util.List;

public class Main {
    /**
     * test
     */
    public static void test() {
        System.out.println("test");
    }

    /**
     * main
     * add comment
     * @param args
     */
    public static void main(String[] args) {
        List<String> list = Arrays.asList("a", "b", "c");
        System.out.println(list);
        System.out.println("main");
        test();
    }

}

Valeur de hachage (SHA1): ʻa05020054dd7c85ef01c20bc9d1f0cc45c46d1e1`

Ajouter une ligne vierge

Main.java


import java.util.Arrays;
import java.util.List;

public class Main {
    /**
     * test
     */
    public static void test() {
        System.out.println("test");
    }

    /**
     * main
     * @param args
     */
    public static void main(String[] args) {

        List<String> list = Arrays.asList("a", "b", "c");
        System.out.println(list);
        System.out.println("main");
        test();
    }

}

Valeur de hachage (SHA1): ʻa05020054dd7c85ef01c20bc9d1f0cc45c46d1e1`

Modifier le retrait

Main.java


import java.util.Arrays;
import java.util.List;

public class Main {
    /**
     * test
     */
    public static void test() {
        System.out.println("test");
    }

    /**
     * main
     * @param args
     */
    public static void main(String[] args) {
            List<String> list = Arrays.asList("a", "b", "c");
        System.out.println(list);
        System.out.println("main");
        test();
    }

}

Valeur de hachage (SHA1): b38492ff5641fa0f074a82ca5f397c7ba7f3575d

Modifier les crochets de regroupement

Main.java


import java.util.Arrays;
import java.util.List;

public class Main {
    /**
     * test
     */
    public static void test() {
        System.out.println("test");
    }

    /**
     * main
     * @param args
     */
    public static void main(String[] args) {
        List<String> list = Arrays.asList("a", "b", "c");
        System.out.println((list));
        System.out.println("main");
        test();
    }

}

Valeur de hachage (SHA1): b38492ff5641fa0f074a82ca5f397c7ba7f3575d

Recommended Posts

Je veux juger de la nécessité de tester en comparant les différences des fichiers de classe lors de la refactorisation de Java.
[Java] Je souhaite calculer la différence par rapport à la date
Je veux limiter l'entrée en réduisant la plage de nombres
Je veux connaître le JSP du portlet ouvert lors du développement de Liferay
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
Je veux obtenir le nom de champ du champ [Java]. (Vieux ton d'histoire)
Je veux var_dump le contenu de l'intention
Première touche de la classe Files (ou Java 8)
Je souhaite supprimer un fichier géré par Git
[Promotion de la compréhension de Ruby (1)] Lorsque vous passez de Java à Ruby, commencez par comprendre la différence.
Je veux obtenir récursivement la superclasse et l'interface d'une certaine classe
Je veux appeler une méthode d'une autre classe
[JavaScript] Je souhaite limiter le traitement en vérifiant les éléments d'entrée lorsque le temps spécifié s'écoule lors de la mise au point.
Je veux juger la gamme en utilisant le diplôme mensuel
Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java
Je veux connaître la réponse de l'application Janken
Je souhaite afficher le nom de l'affiche du commentaire
# 1_JAVA Je veux obtenir le numéro d'index en spécifiant un caractère dans la chaîne de caractères
Je veux retourner la position de défilement de UITableView!
Je veux savoir quelle version de java le fichier jar que j'ai est disponible
Utilisez JLine lorsque vous souhaitez gérer les frappes sur la console caractère par caractère en Java
J'ai essayé de résumer les bases de kotlin et java
Lorsque vous utilisez le constructeur de la classe Date de Java, la date avance de 1900.
Je souhaite modifier le paramètre de sortie du journal de UtilLoggingJdbcLogger
Je souhaite utiliser l'API Java 8 DateTime lentement (maintenant)
Je veux donner un nom de classe à l'attribut select
Je souhaite rechercher de manière récursive la liste des classes sous le package
[Ruby] Je souhaite inverser l'ordre de la table de hachage
Je souhaite simplifier l'instruction if-else de la branche conditionnelle en Java
Comparaison des chaînes de version lorsque vous souhaitez brancher le traitement entre deux versions (implémentation Java)
Je veux rendre le cadre de la zone de texte rouge lorsqu'il y a une erreur de saisie
[Scala] [Java] J'ai essayé de corriger la vulnérabilité de traversée de répertoire lors de la décompression de Zip4j par opération de code d'octet.
Changer la version de java installée par SDKMAN lors du déplacement de répertoires
Je veux comprendre le flux des paramètres de demande de traitement Spring
Je veux revenir à l'écran précédent avec kotlin et java!
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
Je veux éviter OutOfMemory lors de la sortie de gros fichiers avec POI
J'ai essayé de traduire le message d'erreur lors de l'exécution d'Eclipse (Java)
J'ai essayé de résumer les méthodes de Java String et StringBuilder
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
[Java] Je veux effectuer distinctement avec la clé dans l'objet
Je veux contrôler le message d'erreur par défaut de Spring Boot
J'ai créé un outil pour afficher la différence du fichier CSV
Je veux changer la valeur de l'attribut dans Selenium of Ruby
En vérifiant le fonctionnement de Java sous Linux, j'ai pu comprendre la compilation et la hiérarchie.
Comment désassembler un fichier de classe Java
Comment décompiler un fichier de classe Java
Un mémo lorsque vous souhaitez effacer la partie horaire de l'agenda
Ce que j'ai pensé en passant la valeur d'entrée de l'utilisateur à la classe Service
Une histoire à laquelle j'étais accro lors du test de l'API à l'aide de MockMVC
Je veux afficher des images avec REST Controller de Java et Spring!
Enregistré parce que j'étais accro à l'entrée standard de la classe Scanner
[Ruby] Je souhaite extraire uniquement la valeur du hachage et uniquement la clé