[JAVA] Problèmes d’utilisation des valeurs d’affichage à l’écran-13 [C # Refactoring Sample]

Problèmes d'utilisation de la valeur affichée à l'écran

Vous pouvez voir du code qui incorpore le nom d'affichage dans la logique, même s'il a la valeur d'origine. Le problème avec ce code est que si l'affichage change, la logique doit être modifiée. Il est montré concrètement dans l'exemple de code.

Exemple de code

Dans l'exemple de code, si la valeur de division (IsOk) est Oui, ○ s'affiche à l'écran. S'il y a une déclaration dans le document de conception indiquant qu'elle sera en gras dans le cas de ○, le code à créer sera le suivant. La valeur de classification et sa valeur d'affichage peuvent être obtenues à partir de l'écran.

        /**Valeur de la catégorie**/
        private enum IsOk
        {
            Yes,
            No
        }

        public void Main()
        {
            //Implémenté pour l'affichage d'écran NG. Si l'affichage n'est plus ○, une correction est nécessaire.
            if (GetDisplay() == "○")
            {
                SetBold();
            }
        }

        private IsOk GetValue()
        {
            //Obtenez la valeur de l'indicateur définie à l'écran. C'est une valeur fixe car c'est une construction.
            return IsOk.Yes;
        }

        private string GetDisplay()
        {
            //Obtenez la valeur d'affichage de l'indicateur défini à l'écran. C'est une valeur fixe car c'est une construction.
            return "○";
        }

        private void SetBold()
        {
            //Mettez les lettres en gras. Code omis.
        }
java
    /**Valeur de la catégorie**/
    private enum IsOk {
        YES, NO,
    }

    public void main() {

        if (getDisplay() == "○") {
            setBold();
        }
    }

    private IsOk getValue() {
        //Obtenez la valeur de l'indicateur définie à l'écran. C'est une valeur fixe car c'est une construction.
        return IsOk.YES;
    }

    private String getDisplay() {
        //Obtenez la valeur d'affichage de l'indicateur défini à l'écran. C'est une valeur fixe car c'est une construction.
        return "○";
    }

    private void setBold() {
        //Mettez les lettres en gras. Code omis.
    }

problème

Dans le cas de l'exemple de code, si l'affichage passe de ○ à ◎, il est nécessaire de corriger l'intérieur de l'instruction if. Afin de se séparer de l'affichage à l'écran, la valeur de division peut être utilisée.

Après refactoring

        /**Valeur de la catégorie**/
        private enum IsOk
        {
            Yes,
            No
        }

        public void Main()
        {
            //Cela fonctionne si Oui quel que soit l'affichage OK. Il n'est pas affecté par l'affichage à l'écran.
            if (GetValue() == IsOk.Yes)
            {
                SetBold();
            }
        }

        private IsOk GetValue()
        {
            //Obtenez la valeur de l'indicateur définie à l'écran. C'est une valeur fixe car c'est une construction.
            return IsOk.Yes;
        }

        private string GetDisplay()
        {
            //Obtenez la valeur d'affichage de l'indicateur défini à l'écran. C'est une valeur fixe car c'est une construction.
            return "○";
        }

        private void SetBold()
        {
            //Mettez les lettres en gras. Code omis.
        }
java
    /**Valeur de la catégorie**/
    private enum IsOk {
        YES, NO,
    }

    public void main() {

        if (getValue() == IsOk.YES) {
            setBold();
        }
    }

    private IsOk getValue() {
        //Obtenez la valeur de l'indicateur définie à l'écran. C'est une valeur fixe car c'est une construction.
        return IsOk.YES;
    }

    private String getDisplay() {
        //Obtenez la valeur d'affichage de l'indicateur défini à l'écran. C'est une valeur fixe car c'est une construction.
        return "○";
    }

    private void setBold() {
        //Mettez les lettres en gras. Code omis.
    }
## Résumé Au lieu d'utiliser la valeur d'affichage de l'écran telle quelle, utilisez la valeur d'origine. Au moins la partie qui dépend de l'affichage à l'écran peut être réduite.

Article précédent (lorsque le traitement après le branchement conditionnel est redondant)

Article suivant (ignorer les exceptions)

Table des matières

Recommended Posts

Problèmes d’utilisation des valeurs d’affichage à l’écran-13 [C # Refactoring Sample]
Problèmes d’utilisation des valeurs d’affichage à l’écran-13 [C # Refactoring Sample]
Problème atcoder ABC113 C
problème atcoder ABC115 C
Getter, Setter Reverse Problem-10 [Exemple de refactoring C #]
Problèmes d’utilisation des valeurs d’affichage à l’écran-13 [C # Refactoring Sample]
Lorsque le traitement après le branchement conditionnel est redondant-12 [C # Refactoring Sample]
Convertir le tableau 2D de Swift en tableau 2D de C