Hago aplicaciones de línea de negocios donde todos los demás desarrolladores están acostumbrados a hacer aplicaciones CRUD básicas o se centran únicamente en hacer interfaces bonitas / funcionales y obtengo mucho de lo siguiente.
"Con la forma en que solíamos hacerlo, el Empleado tendría todas las cosas que podrías hacer con un empleado". Y fue verdad. Esa "Clase" tenía miles de líneas de código y cualquier cosa que pudieras hacer con un empleado estaba allí. O, peor aún, había una tabla de datos de los empleados y cada desarrollador descubrió cómo hacer lo que querían hacer en el controlador de eventos.
Todas las cosas malas de ese enfoque eran ciertas, pero al menos el desarrollador que usaba al empleado podría, sin consultar otros documentos, descubrir cómo inscribir al empleado en un plan de salud, dar un aumento de sueldo, despedir, contratar, transferir, etc. para Manager y todas las demás ideas principales. O, si usaran al empleado otras tablas de datos necesarias, simplemente podrían hacer lo que quisieran.
Sí, había mucho código duplicado. Sí, era un código muy frágil. Sí, probarlo fue mucho más difícil de lo necesario. Sí, el cambio de funcionalidad era inductor de miedo y Copy Paste era algo natural debido al enfoque.
Pero al menos podían descubrir lo que estaba disponible creando una clase o podían hacer lo que tenían que hacer sin tener que entender la diferencia entre interfaces, clases abstractas, clases concretas, etc. Y no tenían que buscar nada más que Los métodos devueltos por Intellisense o conocer las tablas donde residían los datos.
Busqué en google / binged e incluso yahoo! D pero no encontré ningún reconocimiento de este problema.
Entonces tal vez no haya un problema y solo me falta algo. Me he estrujado el cerebro tratando de encontrar una solución en la que los desarrolladores que no funcionan con el comportamiento / diseño real puedan descubrir fácilmente cómo hacer algo sin tener que hacer referencia a ningún documento externo o escanear los nombres de las clases en los diversos componentes / proyectos para encontrar el que parece que funcionará.
Lo único que he podido encontrar es tener estos, por falta de un nombre mejor, "Tabla de clase de contenido" que no hace nada más que devuelva las clases reales (y realmente la mayoría de ellas son interfaces pero no saber la diferencia o incluso preocuparse) que otros desarrolladores pueden usar para realizar las tareas reales deseadas. Todavía terminan con clases realmente grandes, pero casi no hay comportamiento en ellas.
¿Existe una mejor manera que no requiera un conocimiento íntimo del nivel medio donde se lleva a cabo la implementación real de SOLID?
Básicamente, lo que pregunto es si hay una manera de permitir que los desarrolladores de tipo CRUD sigan siendo desarrolladores CRUD en un sistema muy complejo