-1

このコード (破損) は、ネストが深すぎるため PMD によってフラグが立てられています。私は個人的に、自分がコーディングしたどの言語でも、常にこの方法でコードを書いてきました。特に、大規模なデータベース駆動型の for ループです。

このコーディング スタイルは本当に嫌われているのでしょうか? 私はそれが最も維持しやすく、最もきれいだと思います。

    for (MyList MyRegistry : listJSP) {
        if (meta.containsKey(MyRegistry.getFieldName()) && MyRegistry.getOrderType().equals(orderType)) {

            String CustomerInput = meta.get(MyRegistry.getFieldName())[0];
            String jspFieldName = MyRegistry.getFieldName();

            if (MyRegistry.getErrorsCheck()) {
                mapErrors = valUtil.adTextContainsErrors(CustomerInput, cms.getRegex("VALIDATION"));
                if (mapErrors.containsKey(Boolean.TRUE)) {
                    mapValidationErrors.put(jspFieldName, mapErrors.get(Boolean.parseBoolean("true")));
                    log.info("Errors " + "{}: ", CustomerInput);
                }
            }

            List<JSPFieldValidation> jSPFieldValidation = cms.getJSPFieldValidations(orderType, MyRegistry.getFieldName());
            for (JSPFieldValidation jspf : jSPFieldValidation) {

                String valRule = jspf.getValidationRule();

                if (valRule.equals("REQUIRED")) {
                    if (isEmpty(CustomerInput)) {
                        mapValidationErrors.put(orderType, orderType);
                        log.info(CustomerInput + "{}: ", valRule);
                    }
                }
                else {
                    Pattern p = cms.getRegex(valRule);
                    if (p != null) {
                        if (!isValid(CustomerInput, p)) {
                            mapValidationErrors.put(orderType, orderType);
                            log.info(CustomerInput + "{}", valRule);
                        }
                    }
                }
            }
        }
    }
4

2 に答える 2

4

静的分析ツールは、一般的に受け入れられている (または構成可能な) 標準に基づいて主観的なアドバイスを提供します。

したがって、ループのネストが深すぎるかどうかについて、誰も正しい答えを与えることができません。

PMD が提供する推奨事項が気に入らない場合は、PMD を別の方法で構成して、そのルールを実行しないか、別のパラメーターで実行することをお勧めします。

そうは言っても、そのロジックの一部を小さなメソッドに抽出するのは簡単です。

于 2012-09-13T19:16:11.460 に答える
2

ネストされたループと多くの if がある場合、メソッドの循環的複雑度が増加します。基本的にテストの難易度を示します。

メソッドを小さなメソッドに分割するか、コードに問題がないように思われる場合は無視してください。

于 2012-09-13T19:19:21.947 に答える