Question

J'ai lu du séminal Code Book complet que les instructions de méthode qui doivent être exécutées dans l'ordre de passer par un paramètre de l'une à l'autre est une odeur de code et est un exemple de cohésion séquentielle. Pourquoi n'est-ce pas une bonne idée?

Un exemple artificiel d'une cohésion séquentielle:

public Part createPart(input) {
        PartOne partOne = computePartOne(input);
        PartTwo partTwo = computePartTwo(partOne);
        PartThree partThree = computePartThree(partTwo);
        PartsBuilder partsBuilder = new PartsBuilder();
        return partsBuilder.add(partOne).add(partTwo).add(partThree).build();
    }

Voici l'exerce:

Plusieurs autres types de cohésion sont normalement considérés comme loin d'être idéaux:

Cohésion séquentielle Existe lorsqu'une routine contient des opérations qui doivent être effectuées dans un ordre spécifique, qui partagent les données d'une étape en étape, et qui ne constituent pas une fonction complète lorsqu'ils sont effectués ensemble.

Un exemple de cohésion séquentielle est une routine qui, compte tenu d'une date de naissance, calcule l'âge et le temps de retraite d'un employé. Si la routine calcule l'âge et utilise ensuite ce résultat pour calculer le temps de la retraite de l'employé, il a une cohésion séquentielle. Si la routine calcule l'âge et calcule ensuite le temps de retraite dans un calcul complètement séparé qui utilise les mêmes données de la date de naissance, elle n'a que la cohésion de communication.

Comment rendre la routine fonctionnellement cohérente? Vous créeriez des routines distinctes pour calculer l'âge d'un employé compte tenu d'une date de naissance et de calculer le temps de retraite avec une date de naissance. La routine de temps de retraite pourrait appeler la routine d'âge. Ils auraient tous les deux une cohésion fonctionnelle. D'autres routines pourraient appeler la routine ou les deux routines.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top