La réduction de la Complexité Cyclomatique

Comment puis-je réduire la complexité cyclomatique de le code suivant

public class AnswerTypeEnumConverter implements CustomConverter {

    public Object convert(Object destination, Object source, Class destinationClass, Class sourceClass)
    ...

la méthode convert() est à partir de l'interface CustomConverter qui est une interface prédéfinie dans mon projet et est fourni comme un pot, donc je ne peux pas changer la signature de la convert() méthode, qui est

Object convert(Object existingDestinationFieldValue, Object sourceFieldValue, Class<?> destinationClass, Class<?> sourceClass);

Je suis à l'aide de SONAR 3.6 et il montre l'erreur comme:

The Cyclomatic Complexity of this method is 15 which is greater than 10 authorized.

Voici le code pour le convert méthode

public Object convert(Object destination, Object source, Class<?> destinationClass, Class<?> sourceClass) { 
    Object destinationValue = destination; 
    if (source == null) { 
        LOGGER.info("APPLICATION OBJECT IS NULL CONVERSION STOPPED AND RETURNING NULL");
        return null; 
    } 
    if (destinationValue == null) { 
        destinationValue = new KYExchangeTransfer(); 
    } 
    destinationValue = setRequest(((Application) source), ((KYExchangeTransfer) destinationValue)); 
    return destinationValue; 
} 

Comment puis-je réduire la complexité?

  • Sans voir le code de la convert méthode, il est difficile de vous aider à le changer....
  • La Complexité cyclomatique est causé par beaucoup de if-else. C'est généralement un code-odeur qui indique l'absence de l'abstraction.
  • J'ai édité la question d'inclure votre code source. S'il vous plaît laissez-moi savoir si j'ai transcrit de façon incorrecte.
  • double possible de Comment puis-je réduire la Complexité Cyclomatique de cela?
  • Voici mon code pour convertir() la méthode
InformationsquelleAutor Abhishek | 2014-02-05