[JAVA] Probleme bei der Verwendung von Bildschirmanzeigewerten-13 [C # Refactoring Sample]

Probleme bei der Verwendung des auf dem Bildschirm angezeigten Werts

Möglicherweise wird Code angezeigt, der den Anzeigenamen in die Logik einbettet, obwohl er den ursprünglichen Wert hat. Das Problem mit diesem Code ist, dass die Logik geändert werden muss, wenn sich die Anzeige ändert. Es wird konkret im Beispielcode angezeigt.

Beispielcode

Wenn im Beispielcode der Teilungswert (IsOk) Ja lautet, wird ○ auf dem Bildschirm angezeigt. Wenn das Entwurfsdokument eine Aussage enthält, dass der Fall von ○ fett sein soll, lautet der zu erstellende Code wie folgt. Der Klassifizierungswert und sein Anzeigewert können vom Bildschirm abgerufen werden.

        /**Kategoriewert**/
        private enum IsOk
        {
            Yes,
            No
        }

        public void Main()
        {
            //Implementiert für NG-Bildschirmanzeige. Wenn die Anzeige nicht mehr ○ ist, ist eine Korrektur erforderlich.
            if (GetDisplay() == "○")
            {
                SetBold();
            }
        }

        private IsOk GetValue()
        {
            //Holen Sie sich den Flag-Wert auf dem Bildschirm gesetzt. Es ist ein fester Wert, weil es ein Build ist.
            return IsOk.Yes;
        }

        private string GetDisplay()
        {
            //Rufen Sie den Anzeigewert für das auf dem Bildschirm gesetzte Flag ab. Es ist ein fester Wert, weil es ein Build ist.
            return "○";
        }

        private void SetBold()
        {
            //Machen Sie die Buchstaben fett. Code weggelassen.
        }
java
    /**Kategoriewert**/
    private enum IsOk {
        YES, NO,
    }

    public void main() {

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

    private IsOk getValue() {
        //Holen Sie sich den Flag-Wert auf dem Bildschirm gesetzt. Es ist ein fester Wert, weil es ein Build ist.
        return IsOk.YES;
    }

    private String getDisplay() {
        //Rufen Sie den Anzeigewert für das auf dem Bildschirm gesetzte Flag ab. Es ist ein fester Wert, weil es ein Build ist.
        return "○";
    }

    private void setBold() {
        //Machen Sie die Buchstaben fett. Code weggelassen.
    }

Problem

Wenn im Fall des Beispielcodes die Anzeige von ○ auf ◎ geändert wird, muss das Innere der if-Anweisung korrigiert werden. Um sich von der Anzeige auf dem Bildschirm zu trennen, kann der Teilungswert verwendet werden.

Nach dem Refactoring

        /**Kategoriewert**/
        private enum IsOk
        {
            Yes,
            No
        }

        public void Main()
        {
            //Es funktioniert, wenn Ja, unabhängig von der OK-Anzeige. Es wird von der Bildschirmanzeige nicht beeinflusst.
            if (GetValue() == IsOk.Yes)
            {
                SetBold();
            }
        }

        private IsOk GetValue()
        {
            //Holen Sie sich den Flag-Wert auf dem Bildschirm gesetzt. Es ist ein fester Wert, weil es ein Build ist.
            return IsOk.Yes;
        }

        private string GetDisplay()
        {
            //Rufen Sie den Anzeigewert für das auf dem Bildschirm gesetzte Flag ab. Es ist ein fester Wert, weil es ein Build ist.
            return "○";
        }

        private void SetBold()
        {
            //Machen Sie die Buchstaben fett. Code weggelassen.
        }
java
    /**Kategoriewert**/
    private enum IsOk {
        YES, NO,
    }

    public void main() {

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

    private IsOk getValue() {
        //Holen Sie sich den Flag-Wert auf dem Bildschirm gesetzt. Es ist ein fester Wert, weil es ein Build ist.
        return IsOk.YES;
    }

    private String getDisplay() {
        //Rufen Sie den Anzeigewert für das auf dem Bildschirm gesetzte Flag ab. Es ist ein fester Wert, weil es ein Build ist.
        return "○";
    }

    private void setBold() {
        //Machen Sie die Buchstaben fett. Code weggelassen.
    }
## Zusammenfassung Verwenden Sie den ursprünglichen Wert, anstatt den Bildschirmanzeigewert unverändert zu verwenden. Zumindest der Teil, der von der Bildschirmanzeige abhängt, kann reduziert werden.

Vorheriger Artikel (wenn die Verarbeitung nach bedingter Verzweigung redundant ist)

Nächster Artikel (Ausnahmen ignorieren)

Inhaltsverzeichnis

Recommended Posts

Probleme bei der Verwendung von Bildschirmanzeigewerten-13 [C # Refactoring Sample]
Probleme bei der Verwendung von Bildschirmanzeigewerten-13 [C # Refactoring Sample]
atcoder ABC113 C Problem
atcoder ABC115 C Problem
Getter, Setter Reverse Problem-10 [C # Refactoring Sample]
Probleme bei der Verwendung von Bildschirmanzeigewerten-13 [C # Refactoring Sample]
Wenn die Verarbeitung nach der bedingten Verzweigung redundant ist-12 [C # Refactoring Sample]
Konvertieren Sie das 2D-Array von Swift in das 2D-Array von C.