Java spricht von einer Guard-Anweisung (Guard-Anweisung), wenn nicht aus hässlichem Beispielcode

Kürzlich habe ich einige alte Projekte umgestaltet und einige typische Codeblöcke gefunden.

Wenn man an diese gängigen Schreibmethoden denkt, ist es für Anfänger vielleicht einfacher, sie zu „produzieren“, also habe ich beschlossen, darüber zu sprechen.

Beispiel:


Wie Sie sehen, handelt es sich um eine Funktion, mit der die Duplizierung eines Namens erkannt wird, bevor dieser hinzugefügt oder geändert wird.

    /**
     * 检测标签名是否重复
     * @param Id
     * @param name
     * @return
     */
    Boolean checkLabelNameExist(Integer Id,String name);

Da neue Ergänzungen und Änderungen kombiniert werden, gibt es einen zusätzlichen ID-Eingabeparameter, um zu bestimmen, ob es sich um eine neue Ergänzung handelt (wenn die ID leer ist, handelt es sich um eine neue Ergänzung, und wenn sie nicht leer ist, handelt es sich um eine Änderung).

Bei Neuzugängen bedeutet dies, dass die Daten mit diesem Namen dupliziert werden, wenn festgestellt wird, dass sie vorhanden sind.

Die Änderung bedeutet, dass die Daten mit diesem Namen ausgeschlossen werden müssen. Sie gelten als Duplikat, wenn sie noch vorhanden sind.

Werfen wir also einen Blick auf die hässliche Ausgabe :

    /**
     * 编辑或新增前 ,判断名称是否已存在
     * @param id
     * @param name
     * @return true 为存在  ; false 为不存在
     */
    @Override
    public Boolean checkLabelNameExist(Integer id, String name) {
        Label label = labelService.queryOneByName(name);
        if (Objects.isNull(id)){
            if (Objects.isNull(label)){
                return  false;
            }else {
                return  true;
            }
        }else {
            if (Objects.isNull(label)){
                return  false;
            }else {
                if (!label.getId().equals(id)){
                    return  true;
                }else {
                    return  false;
                }
            }
        }
    }

Kommt Ihnen der obige Code bekannt vor, wenn Sie ihn zum ersten Mal sehen? 

Haben Sie jemals eine ähnliche Ausgabe gemacht oder machen Sie immer noch?

Schauen wir uns an, wie der Code nach Verwendung der Guard-Anweisungsmethode aussieht (ist das nicht viel einfacher):

    @Override
    public Boolean checkLabelNameExist(Integer id, String name) {
        Label label = labelService.queryOneByName(name);
        //查出来是空的,代表肯定不存在
        if (Objects.isNull(label)){
            return  false;
        }
        //如果是新增,查询出来不为空,则代表已存在
        if (Objects.isNull(id)){
            return  true;
        }
        //若是编辑,仅需要判断传入的ID 和查询出来的是否一致,不一致则代表 存在
        return !label.getId().equals(id);
    }

Am Anfang gab es keine Probleme mit dem Journalcode, aber er kam mir sehr verwirrend vor und ich ging einfach Schritt für Schritt vor, ohne eine Gesamtplanung aus einer übergeordneten Perspektive.

Die Idee, Schutzsätze zu verwenden, war mir zunächst nicht vertraut. Es spielt keine Rolle.

Nachdem Sie mit dem Schreiben fertig sind, können Sie den Code Zeile für Zeile lesen.

Finden Sie die Schutzbedingungen. Diese Bedingungen müssen nicht in die IF-Tiefe eingebettet werden und können im Voraus beurteilt werden.

 Anfänger können sich die beiden Code-Schnipsel oben ansehen und selbst darüber nachdenken.

Guard-Anweisungen vereinfachen den Programmablauf, indem sie eine logische Analyse der ursprünglichen Bedingungen durchführen und die Beurteilung bestimmter Schlüsselbedingungen (Guard-Bedingungen) priorisieren. Sie werden daher Guard-Anweisungen genannt.

Supongo que te gusta

Origin blog.csdn.net/qq_35387940/article/details/134637398
Recomendado
Clasificación