La respuesta a esto es simple.
La consistencia es de suma importancia.
pero viene con una advertencia ...
Es probable que tú y tu compañero de trabajo estén obsesionados con el tipo de consistencia incorrecto
Las implementaciones son desechables. Se pueden revisar por completo con diversos grados de facilidad, dependiendo de la calidad y la amplitud del conjunto de pruebas. Preocupándose por cosas como "¿Debería ser esto una propiedad?", "¿No debería el código delgado usar LINQ en lugar de una construcción de nivel inferior?" Es de dudoso valor. Es muy difícil vincular las mediciones al valor de la consistencia en el nivel de implementación. Una pregunta mucho mejor que hacer en este nivel es "¿Funciona este código como se anuncia?". La consistencia de la implementación de TL; DR es donde las "pequeñas mentes" tienen su hobgoblin.
¿Por qué la consistencia no es tan importante aquí? Las implementaciones suelen tener un pequeño número 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 que la mayoría. Este patrón continúa ad infinitum . En este contexto, la coherencia 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 importante.
Esto no quiere decir que debas volverte loco en tus implementaciones. Más bien, es decir que un diseño agradable, limpio y simple será órdenes de magnitud más valioso para su hipotético mantenedor futuro que el método tonto de consistencia de placa de caldera por método. Esto nos lleva al punto real ...
Las API no son desechables.
Se trata de todos los niveles de código de API, servicios web, SDK, etc. Estos deben, deben, DEBEN ser coherentes. Las ganancias de productividad de esta variedad de consistencia son enormes por varias razones:
Pruebas de integración:
Si mantiene su API consistente, puede crear conjuntos de pruebas de integración. Esto permite a los desarrolladores intercambiar libremente los detalles de la implementación y lograr una validación inmediata. ¿Quieres cambiar tu mierda de compañeros 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 mil probadores que ejecutan tareas mundanas. Es equivalente a aumentar considerablemente el número de empleados de su organización.
Productividad
Cuando las API son consistentes, puedes hacer conjeturas sobre cómo usar una API simplemente siguiendo lo que has aprendido sobre el uso de otras partes de la API. Esto se debe a que la API ofrece una "apariencia" natural y coherente. Significa que su cliente dedica menos tiempo a revisar 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 utilizan suele ser mucho mayor que el número de personas que contribuyen a sus implementaciones. Se multiplican las pequeñas ganancias de una pequeña consistencia y se amortizan los costos de mantener esa consistencia.
Conclusión
La consistencia es costosa. En su cara disminuye la productividad. Limita a los desarrolladores y les hace la vida más difícil. Coloca limitaciones en las formas en que pueden resolver un problema, a veces obligándolos a resolverlo de una manera no óptima. A menudo, esto se debe a razones que no comprenden, están mal concebidas o no están al tanto de (contratos, políticas organizativas más grandes o políticas interorganizacionales).
Raymond Hettinger hizo algunos puntos excelentes en su charla sobre Pycon 2015 con respecto al uso de la guía de estilo PEP8 para los equipos de programadores de Python. Demostró que la obsesión por la coherencia estilística en una pieza de código hizo que los revisores de códigos no entendieran la lógica seria y los defectos de diseño. Su hipótesis puede resumirse ya que es fácil encontrar inconsistencias estilísticas; determinar la calidad real de una pieza de código es difícil
El punto aquí es 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 manera 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 es probable que esté haciendo un mal servicio. su organización.