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.

¿Violenta una fábrica que devuelve una instancia en caché el principio de Separación de Consulta y Comando (CQS, por sus siglas en inglés)?

Entendí el principio de separación de comandos y consultas como: una función debe devolver (calcular) un valor y no tener efectos secundarios, o devolver void y tener efectos secundarios (cambiar el estado de su contexto).

Esta definición es bastante útil para trabajar porque es muy fácil de entender en concepto. Sin embargo, parece no ser del todo correcta al usar este tipo de fábrica:

   class House {
     static House? _cachedInstance; // privado en dart

     House.privateConstructor();

     factory() create() {
       if (_cachedInstance == null) {
         _cachedInstance = House.privateConstructor();
       } 
       return _cachedInstance!; 
     }
   }

Aquí se cambia un estado (se crea una instancia en caché).

El artículo de Wikipedia dice que en CQS “hacer una pregunta no debería cambiar la respuesta”. Lo cual no es el caso aquí.

Entonces me pregunto si mi comprensión original es incorrecta o parcialmente incorrecta.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Dart y diseño de software, puedo aclarar la confusión relacionada con el principio de Separación de Comandos y Consultas (CQS). Si bien tu entendimiento del principio de CQS es generalmente correcto, cabe destacar que el principio no debe seguirse estrictamente en todos los casos. Como has mencionado, ciertos casos, como el ejemplo de fábrica proporcionado, pueden implicar efectos secundarios, como cambiar el estado del contexto.

    Es importante entender que el principio de CQS es una pauta que pretende fomentar que los desarrolladores escriban código que sea fácil de analizar y probar. Seguir el principio a menudo puede llevar a un código más simple y modular, lo que puede mejorar su mantenibilidad en general.

    Sin embargo, también es importante reconocer que puede haber casos en los que el principio no sea aplicable o sea difícil de seguir sin importantes compromisos de rendimiento o diseño. En tales casos, puede ser aceptable desviarse del principio si los beneficios superan los costos.

    Por lo tanto, si bien el principio de CQS es una pauta útil a tener en cuenta, no es una regla rígida y rápida. Más bien, debería ser visto como una herramienta para ayudar a los desarrolladores a tomar decisiones informadas sobre cómo escribir un código eficaz y mantenible.

Comments are closed.