Entonces, era un punto final, y luego pasamos a la puerta de enlace de la API, y luego cambiamos a GraphQL, y luego cambiamos directamente a Play. Así que todos estábamos cambiando la forma en que los datos llegaban a la aplicación. Entonces, si pones esto directamente en la aplicación, estás copiando las cosas. Así que simplemente dale la aplicación o realmente obtén tus datos o cualquier otra cosa, cookie o lo que sea.
De acuerdo. Entonces, nuevamente, organiza tu código en torno a las ideas de negocio, no a los frameworks. Esto es divertido. Sí. Entonces, deberías escribir... Deberíamos escribir nuestras reglas de negocio tal como te las indica el propietario del producto. Entonces, el usuario va al sitio web, hace esto, hace aquello, y debería describir tu aplicación desde la perspectiva del propietario del producto, porque si escribes el código como, tengo esta base de datos, React hace esto, y luego tengo un enrutador, será difícil asegurar que estás haciendo lo correcto porque estás conectando herramientas para hacer tu trabajo. Probablemente sea más fácil describir qué está haciendo exactamente el código, como alguien preguntó, porque el propietario del producto probablemente no tiene idea de qué es React o GraphQL o este tipo de cosas.
Y esto es algo de lo que ya hemos hablado, por lo que la regla de dependencia mantiene las colas alejadas del núcleo, por lo que sabes que necesitas acceder a los datos, pero no necesitas saber cómo obtener los datos. Sí, solo quería preguntar si tienes un ejemplo, un escenario para el penúltimo punto que mencionaste, organiza tu código en torno a las reglas de negocio, no a los frameworks. Entonces, si tomas por ejemplo, esta aplicación de preguntas que hiciste, ¿cómo se aplicaría a esta aplicación de preguntas? Sí, no estoy seguro si tenemos aquí un ejemplo específico para eso, pero recientemente tuvimos, por ejemplo, puedo dar un ejemplo de nuestras rutinas diarias. Y tenemos un problema que estamos tratando de resolver un problema. Tal vez Ruben pueda ayudarme a recordar. Entonces estábamos tratando de hacer algo. Dame un segundo. Y sí, porque esperamos que la interfaz de usuario tenga que hacer algo. Así que estamos cambiando todo de un formulario simple a un paso a paso. Y estamos tratando de organizar nuestras reglas de acuerdo con el paso a paso porque primero mostraremos este paso y este paso tiene estos campos. Entonces, en algún momento nuestro dominio necesitaba saber que estábamos en el paso a paso. Pero no, no lo sabía. Entonces, la forma en que configuras tus eventos, entonces en realidad, le darás forma a la aplicación de acuerdo a cómo se desarrollen tus eventos. Entonces, el usuario, entonces tienes una entrada y luego el dominio ejecuta una acción y así sucesivamente. Entonces comienzas a seguir estas acciones, acciones, acciones, acciones. Porque si intentamos comenzar, si comenzamos a moldear nuestro dominio según cómo se ve, entonces será difícil cambiarlo de nuevo. Entonces, las reglas serán las mismas, porque estamos haciendo el formulario, tenemos una validación para un campo que es el mismo, no importa si este campo se muestra en un paso o en otro paso o no importa. No estoy seguro si puedo explicar de alguna manera esta pregunta o si la evité. Entonces, en su mayoría, tienes algo que incluso se hace en la arquitectura... Sí. Sí. Entonces, si defines los eventos, cualquier otra persona puede reaccionar a ellos. Si defines tu interfaz de usuario y tus herramientas, estás atrapado. Entonces, eso es lo que estamos tratando de resolver. Si definimos la forma en que funciona nuestro núcleo, independientemente... Independientemente, una de esas palabras. Elige la correcta. Puedes dar forma a la interfaz de usuario o cualquier otro servicio en torno a ellos. Entonces, esa es la idea. Así que sé agnóstico de lo que estás usando y construye el negocio sin importar lo que estés usando. Entonces, puede construir... Puede usar este núcleo en otros lugares. Tenemos este largo y complejo formulario de validación en el cliente, y simplemente puede tomar esta parte y compartirla en GraphQL, y puede evaluar la misma entrada. No sabe siquiera que tiene una interfaz de usuario. Así que solo necesita saber que algo está sucediendo, en esas cosas y sale. Entonces, puede compartir todo este núcleo en el cliente, y en GraphQL, por ejemplo, u otros usos. Esa es la idea. Diría que si tienes una capa de interfaz de usuario, debe ser completamente independiente de las demás capas. Y el estado X, ¿es una preocupación de la interfaz de usuario? Probablemente porque no estoy muy familiarizado con X state, pero creo que es una especie de cosa de Redux, la máquina de estado. Tu núcleo, tu dominio, básicamente es tu estado, en este caso. Entonces, lo que haremos aquí es tomar nuestro dominio, y la interfaz de usuario lo adaptará a un estado. Entonces, todo lo que tu interfaz de usuario sabrá es el dominio. Entonces, obtiene, okay, mi dominio tiene este estado en este momento. Y luego, el reductor tomará, de acuerdo con el evento que estamos tratando, como algo se cargó, algo falló, notificación del infierno, quién sabe. El reductor de tu X state o cualquier otro gestor de estado que uses, tomará este nuevo conjunto de información y adaptará el estado. Es por eso que llamo, en realidad, a un adaptador dentro de la interfaz de usuario. Porque toda tu entrada es el estado del dominio. Entonces, básicamente, ya tiene de alguna manera un gestor de estado, porque esto puede funcionar de forma independiente de la interfaz de usuario, solo puede hacer aquí un jQuery, volver a reaccionar a jQuery como si fuera JavaScript puro, puede hacer lo mismo. Entonces, tienes algo que tiene que tomar tu dominio, y de acuerdo con un evento que ocurra, tiene que dar forma al estado en caso de tener algún tipo de framework reactivo, o simplemente actualizar tu DOM directamente. Depende de tu estrategia en una interfaz de usuario. Entonces, estamos usando React, pero puedes usar lo que sea o incluso nada. Y facilita las pruebas inyectando todo. No tenemos pruebas en este framework, pero el hecho de que en realidad podemos inyectar todo, no necesitas simular todo. Entonces, simplemente puedes pasar una simulación o pasar lo que sea, por lo que no necesitas, por ejemplo, si quieres probar si algo se obtuvo, no necesitas representar algo, simplemente lo pruebas directamente, porque puede acceder a cada una de las capas y probarlo, necesitas probarlo. Porque algo que es muy común es que hacemos pruebas de integración testing a las pruebas unitarias. Entonces, representamos una aplicación completa para probar si algo está funcionando correctamente, o un componente de uso de representación para probar si se hizo algo. Entonces, aquí estamos evitando todo este trabajo adicional de representar cosas en las pruebas unitarias. Creo que es una pregunta muy buena.
Comments