es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo solucionar los múltiples “if return” que se informan como código duplicado por SonarQube.

Sonarqube informa de código duplicado al tener múltiples declaraciones de retorno en instrucciones if. Por ejemplo, tengo el siguiente código:

private static double computeGain(int rangeMax) {
        if (rangeMax <= 35) {
            return 6.0;
        } else if (rangeMax <= 85) {
            return 5.0;
        } else if (rangeMax <= 170) {
            return 4.0;
        } else if (rangeMax <= 340) {
            return 3.0;
        } else if (rangeMax <= 850) {
            return 2.0;
        } else if (rangeMax <= 1700) {
            return 1.0;
        } else if (rangeMax <= 3400) {
            return 0.5;
        } else if (rangeMax <= 8000) {
            return 0.25;
        }

        return 0.0D;
}

He intentado reemplazar la declaración de retorno por una asignación a una variable como esta ganancia = 6.0;, para reducir el número de retornos, pero sin éxito.

Eliminar todos los else, ya que son superfluos, tampoco funcionó.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en Java y Sonarqube, puedo explicar que tener múltiples instrucciones de retorno “if” puede resultar en código duplicado y desencadenar una señal de alerta en Sonarqube. En este caso particular, el método computeGain() tiene múltiples condiciones “if” con una declaración de retorno que resulta en código redundante.

    Para solucionar este problema, puede reemplazar las múltiples condiciones “if” con una declaración “switch”, que es una forma más eficiente de ramificar el código. Alternativamente, puede utilizar una tabla de búsqueda para asignar los valores de entrada de rangeMax a los valores de salida correspondientes de gain. Este enfoque reduce el número de condiciones “if” y también hace que sea más fácil leer y mantener el código para futuros cambios.

    El intento de reemplazar las instrucciones de retorno con una asignación a una variable no funcionó porque no reduce el código redundante. De manera similar, eliminar las declaraciones “else” no soluciona el problema ya que el código sigue conteniendo múltiples condiciones “if” con una declaración de retorno. Por lo tanto, es crucial usar un mejor enfoque para manejar la lógica y evitar el código duplicado.

Comments are closed.