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.

Refactorizar el bloque de instrucciones switch para reducir la complejidad del código.

Tengo el siguiente código y me gustaría refactorizarlo utilizando un diccionario o algo similar, para reducir la complejidad del código. Es posible que pueda haber cualquier número de declaraciones de caso.

switch (this.errorType) {
      case ErrorType.NoApps:
        this.title = 'No se encontraron aplicaciones';
        this.subtitle = 'Contacta al equipo de aplicaciones';
        this.message = 'mensaje de no aplicaciones';
        this.contact = 'John';
        break;
      case ErrorType.NoAccounts:
        this.title = 'No se encontraron cuentas';
        this.subtitle = 'Contacta al equipo de soporte';
        this.message = 'mensaje de no cuentas';
        this.contact = 'Jake';
        break;
      case ErrorType.NoUsers:
        this.title = 'No se encontraron usuarios';
        this.subtitle = 'Contacta al servicio al cliente';
        this.message = 'mensaje de no cuentas';
        this.contact = 'Wiley';
        break;
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Una forma de refactorizar este código utilizando un diccionario es creando un objeto con claves que representen los diferentes tipos de errores y valores que representen un objeto que contenga las propiedades relevantes para cada tipo de error, de la siguiente manera:

    const errorInfo = {
      [ErrorType.NoApps]: {
        title: 'No se encontraron aplicaciones',
        subtitle: 'Contactar al equipo de aplicaciones',
        message: 'mensaje de no hay aplicaciones',
        contact: 'John',
      },
      [ErrorType.NoAccounts]: {
        title: 'No se encontraron cuentas',
        subtitle: 'Contactar al equipo de soporte',
        message: 'mensaje de no hay cuentas',
        contact: 'Jake',
      },
      [ErrorType.NoUsers]: {
        title: 'No se encontraron usuarios',
        subtitle: 'Contactar al servicio al cliente',
        message: 'mensaje de no hay usuarios',
        contact: 'Wiley',
      },
    }
    

    Luego, puedes simplificar la instrucción switch y solo buscar la información relevante del error basándote en el tipo de error:

    const error = errorInfo[this.errorType];
    if (error) {
      this.title = error.title;
      this.subtitle = error.subtitle;
      this.message = error.message;
      this.contact = error.contact;
    }
    

    Este enfoque reduce la complejidad del código al eliminar la necesidad de múltiples ramas en la instrucción switch, lo que facilita el mantenimiento y la modificación del código. Además, si se agregan nuevos tipos de errores en el futuro, simplemente se pueden agregar como claves al objeto errorInfo sin necesidad de modificar la instrucción switch.

Comments are closed.