Soy parte de un equipo de consultores que implementa una nueva solución para un cliente. Soy responsable de la mayoría de las revisiones de código en la base de código del lado del cliente (React y javascript).
Me he dado cuenta de que algunos miembros del equipo usan patrones de codificación únicos hasta el punto de que podría elegir un archivo al azar para saber quién fue el autor del estilo solo.
Ejemplo 1 (funciones en línea únicas)
React.createClass({
render: function () {
var someFunc = function () {
...
return someValue;
};
return <div>{someFunc()}</div>
}
});
El autor argumenta que al asignar un nombre significativo a someFunc, el código será más fácil de leer. Creo que al incluir la función y agregar un comentario, se podría lograr el mismo efecto.
Ejemplo 2 (funciones independientes)
function renderSomePart(props, state) {
return (
<div>
<p>{props.myProp}</p>
<p>{state.myState}</p>
</div>
);
}
React.createClass({
render: function () {
return <div>{renderSomePart(this.props, this.state)}</div>;
}
});
Así es como lo hacemos habitualmente (evita tener que pasar estado y accesorios):
React.createClass({
renderSomePart: function () {
return (
<div>
<p>{this.props.myProp}</p>
<p>{this.state.myState}</p>
</div>
);
},
render: function () {
return <div>{this.renderSomePart()}</div>;
}
});
Si bien estos patrones de codificación son técnicamente correctos, no son consistentes con el resto de la base de código ni con el estilo y los patrones que Facebook (el autor de React) sugiere en los tutoriales y ejemplos.
Necesitamos mantener un ritmo rápido para entregar a tiempo y no quiero cargar al equipo innecesariamente. Al mismo tiempo, debemos estar en un nivel de calidad razonable.
Estoy tratando de imaginarme a mí mismo como el desarrollador de mantenimiento de los clientes frente a inconsistencias como estas (cada componente puede requerir que comprenda otra forma de hacer lo mismo).
Pregunta:
¿Cuál es el valor percibido por el cliente y sus desarrolladores de mantenimiento de una base de código coherente frente a permitir que persistan inconsistencias como estas y se propaguen potencialmente?