Java は、ガード ステートメント (ガード ステートメント) if else について、醜いサンプル コードから説明します。

最近、いくつかの古いプロジェクトをリファクタリングしていたところ、典型的なコード ブロックをいくつか見つけました。

こういった一般的な書き方を考えると、初心者でも「制作」しやすいのではないかと思い、お話してみることにしました。

例:


ご覧のとおり、これは名前を追加および変更する前に、名前の重複を検出するために使用される関数です。

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

新規追加と変更が組み合わされるため、新規追加かどうかを判断する追加 ID 入力パラメーターがあります (ID が空の場合は新規追加、空でない場合は変更)。

したがって、新規追加の場合、この名前のデータが存在することが判明した場合、そのデータは複製されることを意味します。

変更に関しては、この名前のデータを除外する必要があることを意味し、まだ存在する場合は重複とみなされます。

それでは、醜い出力を見てみましょう:

    /**
     * 编辑或新增前 ,判断名称是否已存在
     * @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;
                }
            }
        }
    }

上記のコードを初めて見たとき、見覚えがあると思いませんか? 

同様の出力を行ったことがありますか、または現在も行っていますか?

ガード ステートメント メソッドを使用した後のコードがどのようになるかを見てみましょう (はるかに単純ではありませんか)。

    @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);
    }

当初のジャーナル コードには問題はありませんでしたが、非常に混乱しているように思えました。より高いレベルの観点から全体的な計画を立てずに、段階的に進めるだけでした。

最初は、ガードセンテンスを使用するというアイデアに慣れていませんでした。それは問題ではありません。

書き込みが完了したら、コードを 1 行ずつ読むことができます。

if の深さに埋め込む必要がなく、事前に判断できるガード条件を見つけます。

 初心者は上記の 2 つのコード スニペットを見て、自分で考えてみてください。

ガード文は、元の条件を論理的に解析し、特定のキー(ガード)条件の判断を優先することでプログラムの流れを簡略化するため、ガード文と呼ばれます。

おすすめ

転載: blog.csdn.net/qq_35387940/article/details/134637398