Si tuviera un colega que no entendía los beneficios de la Separación de preocupaciones, o no lo entendía lo suficiente como para aplicarlo consistentemente en su trabajo diario, ¿cómo se lo explicaría?
code-quality
object-oriented
Marcie
fuente
fuente
Respuestas:
Imagine que tiene un programa que se ha lanzado. Llega un cliente y le ofrece pagarle por una mejora de una de sus características. Para obtener el dinero, deberá cambiar su programa para agregar la nueva función. Algunas de las cosas que influirán en su margen de beneficio son:
La separación de preocupaciones le ayuda a obtener respuestas más positivas a estas preguntas.
fuente
Mire un hospital y piense en todas las diferentes funciones que intervienen en la atención de un paciente: enfermeras de triaje, médicos, asistentes médicos, técnicos, personal administrativo, cafetería, etc.
¿Hay alguna persona que sepa cómo todas esas personas hacen su trabajo? No, porque sería abrumador. Tienen que separar las diferentes responsabilidades en roles distintos y los puntos de contacto entre esos roles son muy específicos.
fuente
Si él / ella trabaja en una oficina, tómelo como ejemplo, explique el papel de cada personal en esa oficina y pregúntele, ¿qué pasaría si ese personal no se divide de acuerdo con su trabajo?
fuente
Vería cómo no pudo aplicar SoC en su código / diseño y convertirlo en un ejemplo del mundo real con el que puede relacionarse y que obviamente no es deseado.
Por ejemplo, si tiene una clase en la que el cliente necesita proporcionar varios datos que no son relevantes para esos clientes, entonces usaría la analogía de una panadería en la que tiene que traer sus propios granos y levadura si desea comprar un pan.
fuente
Un ejemplo podría ser un desarrollador html que quiera separar html, css y javascript en archivos separados. De esta manera, puede cambiar la apariencia de algo que se dice simplemente modificando el CSS o el comportamiento de algo cambiando el archivo javascript que se carga por separado. Si tiene un sitio receptivo o adaptable, este paradigma funciona bien, ya que puede cargar diferentes CSS o JavaScript dependiendo de la ventana gráfica de un usuario o agente de usuario. Sin embargo, si modifica el html o la plantilla, es probable que css o javascript se rompan. Estas preocupaciones separadas también pueden ser dependientes.
Otro enfoque es agrupar todos sus css javascript y html en un grupo de componentes o módulos. Esto significa que puede realizar cambios en un módulo y que no debería afectar a otros componentes o módulos en la página que se ejecuta junto con otros que no están relacionados. Aquí los archivos css, js y html se fusionan en un solo componente que puede probarse de forma unitaria. Por lo tanto, la separación de las preocupaciones viene en forma de componentes atómicos individuales que pueden ser probados en unidades en lugar de la separación de elementos de marcado, estilo y comportamiento. Este segundo enfoque es más adecuado para crear aplicaciones web más complejas.
editar. Como recibí una respuesta negativa a este comentario, pensé en volver a visitarlo e intentar calificar algunos de mis puntos de vista. Desafortunadamente, cualquier comentario aquí no es particularmente constructivo, pero vi una discusión interesante en otra parte que analiza React, la tecnología actual en desarrollo web, un ejemplo del mundo real, y pregunta si rompe la separación de preocupaciones o, en particular, si rompe uno de Los principios de la metodología de diseño orientado a objetos SÓLIDOS de Feather.
La perspectiva técnica del desarrollador de JavaScript
La perspectiva del diseñador UX / UI
La perspectiva del equipo
https://hashnode.com/post/does-react-really-violate-separation-of-concern-by-putting-html-and-js-in-a-single-file-cil3bn5hj0011a65347rsdut0
También en la página hay un enlace a una presentación interesante de Pete Hunt, de Facebook, donde habla sobre componentes, no plantillas, y separa las preocupaciones en la aplicación del lenguaje en lugar de las preocupaciones del marco, es decir, plantillas, CSS y JavaScript. etc.
Con respecto a la separación de sus inquietudes en el idioma de su aplicación, esto podría implicar el uso de varios patrones para separar o desacoplar su código en forma modular que se pueda probar en la unidad, etc.
Para resumir, separar las preocupaciones puede depender de su rol o punto de vista, como se mencionó en otro lugar.
fuente