La respuesta a esto es simple.
La consistencia es de suma importancia.
pero viene con una advertencia ...
Es probable que usted y su compañero de trabajo estén obsesionados con el tipo incorrecto de consistencia.
Las implementaciones son desechables. Se pueden revisar por completo con distintos grados de facilidad según la calidad y la amplitud del conjunto de pruebas. Preocuparse por cosas como "¿Debería ser esto una propiedad?", "¿No deberían los códigos delgados usar LINQ en lugar de una construcción de nivel inferior?" Es de dudoso valor. Es difícil vincular cualquier medida al valor de consistencia en el nivel de implementación. Una pregunta mucho mejor para hacer a este nivel es "¿Este código funciona como se anuncia?". La coherencia de la implementación de TL; DR es donde las "mentes pequeñas" obtienen su duende.
¿Por qué la consistencia no es tan importante aquí? Las implementaciones generalmente tienen una pequeña cantidad de contribuyentes. La mayoría de los métodos están escritos y nunca se vuelven a tocar. Del código restante, el número de métodos que tienen dos contribuyentes es casi seguro una mayoría. Este patrón continúa hasta el infinito . En este contexto, la consistencia no es tan importante. Si la vida útil del código es bastante pequeña ( unos pocos años ), las ganancias de la consistencia agresiva probablemente no sean un factor.
Esto no quiere decir que deba volverse loco en sus implementaciones. Más bien es decir que un diseño agradable, limpio y simple será de gran valor para su hipotético futuro mantenedor que la tonta consistencia de la placa de caldera método por método. Esto nos lleva al punto real ...
Las API no son desechables.
Este es todo el nivel de código de API, servicios web, SDK, etc. Estos deben, deben, DEBEN ser consistentes. Las ganancias de productividad de esta variedad de consistencia son enormes por varias razones:
Pruebas de integración:
Si mantiene la coherencia de su API, puede crear conjuntos de pruebas de integración. Esto permite a los desarrolladores intercambiar libremente los detalles de implementación y lograr la validación inmediata. ¿Quieres cambiar tu basura de trabajo a LINQ? ¿Se ejecutan las pruebas de integración? También proporciona validación cuando se prepara para ir a producción. Debido a que las computadoras son rápidas, una sola computadora portátil puede realizar el trabajo de miles de evaluadores que ejecutan tareas mundanas. Es equivalente a aumentar considerablemente el personal de su organización.
Productividad
Cuando las API son consistentes, puede adivinar cómo usar una API simplemente siguiendo lo que aprendió sobre el uso de otras partes de la API. Esto se debe a que la API ofrece una apariencia y sensación natural y consistente. Significa que su cliente pasa menos tiempo revisando la documentación. La incorporación es más fácil y más barata. Se hacen menos preguntas a las personas que desarrollaron la API. La consistencia hace que todos sean ganadores
¿Por qué es importante la coherencia en este escenario? Porque las API tienen exactamente el problema opuesto de las implementaciones. El número de personas que los usan es generalmente mucho mayor que el número de personas que contribuyen a sus implementaciones. Las pequeñas ganancias de un poco de consistencia se multiplican y los costos de mantener esa consistencia se amortizan.
Conclusión
La consistencia es cara. A primera vista, reduce la productividad. Restringe a los desarrolladores y les dificulta la vida. Establece limitaciones en las formas en que pueden resolver un problema, a veces obligándolos a resolverlo de una manera no óptima. Esto es a menudo por razones que no entienden, están mal concebidas o no están al tanto (contratos, políticas organizacionales o interorganizacionales más amplias).
Raymond Hettinger hizo algunos puntos excelentes en su charla de Pycon 2015 sobre el uso de la guía de estilo PEP8 para equipos de programadores de Python. Mostró que la obsesión por la coherencia estilística en un fragmento de código provocó que los revisores de código omitieran serias fallas lógicas y de diseño. Su hipótesis se puede resumir en que encontrar inconsistencias estilísticas es fácil; determinar la calidad real de un código es difícil
El punto aquí es ser crítico. Identifique dónde es importante la consistencia y protéjala agresivamente. Donde no es importante no pierdas tu tiempo. Si no puede proporcionar una forma objetiva de medir el valor de la consistencia (en los casos anteriores "personal efectivo", costo en función de la productividad) y no puede demostrar que los rendimientos son sustanciales, entonces probablemente esté haciendo un mal servicio a tu organización.
IEnumerable
s en lugar de un DAO.