SonarQube Umgestalten, diese Methode zur Reduzierung seiner Kognitiven Komplexität

Habe ich die unten utility-Methode und ich bin mit mehreren if-Anweisungen und erste kognitive Komplexität Frage. Ich ging durch einige links, aber ich bin nicht in der Lage zu verstehen, wie sollte ich ändern mein code ohne Auswirkungen auf die Anwender dieser Methode.

public static boolean isWrapperValid(WrapperClass wrapper, boolean isTechnicalToken){

    String key=null;
    boolean isValidWrapper = false;

    if (wrapper != null && wrapper.length() > 7
        && wrapper.substring(0, 6).equalsIgnoreCase("XYZ"))
    {
        wrapper= wrapper.substring(7, wrapper.lastIndexOf('.')+1);
    }
    if(wrapper != null && wrapper.equalsIgnoreCase("TFR")) {
        isValidWrapper=Boolean.TRUE;
    }
    try {
         key = wrapper.getKey();
    }
    catch (Exception exception) {
        return isValidWrapper;
    }

    if(key!=null) {

        Date tokenExpiryTime = key.getExpiresAt();

        if(tokenExpiryTime!=null) {
            return isValidWrapper;
        }

        String algorithm=key.getAlgorithm();
        if(!DESIRED_ALGO.equals(algorithm)) {
            return isValidWrapper;
        }

        String value6=key.getType();
        if(!DESIRED_TYPE.equals(value6)) {
            return isValidWrapper;
        }


        if(key.getValue1()!=null && key.getValue2().size()>0 && key.getValue3()!=null && key.getValue4()!=null && key.getValue5()!=null) {
            isValidWrapper=Boolean.TRUE;
        }
    }

    return isValidWrapper;
}

Bitte teilen Sie Ihre Vorschläge zur Umgestaltung dieser code.

(wrapper != null && wrapper.length() > 7 && wrapper.substring(0, 6).equalsIgnoreCase("XYZ")) == false. Es sei denn, "XYZ -" nicht eigentlich "XYZ".
Das wird nie wahr sein wrapper.substring(0, 6).equalsIgnoreCase("XYZ"). Weil Sie erstellen eine Teilfolge, die sechs Zeichen lang sein (wrapper.substring(0, 6)). Daher kann es nie gleich sein XYZ.
das ist genau das, was ich dachte, wenn ich schrieb den Kommentar oben. Noch, es könnte möglich sein, da wir nicht genau wissen, was WrapperClass ist. Es könnte sein, dass WrapperClass.substring() tun nicht, was wir denken, was es tut!
Guter Punkt. Hab nicht dran gedacht.
ich hatte gehalten, so nicht, um zu zeigen, ursprünglichen Werte.. plz Ignoriere solche Dinge

InformationsquelleAutor smruti ranjan | 2018-04-10

Schreibe einen Kommentar