Należę do zespołu konsultantów wdrażającego nowe rozwiązanie dla klienta. Jestem odpowiedzialny za większość recenzji kodu w bazie kodu po stronie klienta (React i javascript).
Zauważyłem, że niektórzy członkowie zespołu używają unikalnych wzorców kodowania do tego stopnia, że mogłem losowo wybrać plik i powiedzieć, kto był autorem tylko z tego stylu.
Przykład 1 (jednorazowe funkcje wbudowane)
React.createClass({
render: function () {
var someFunc = function () {
...
return someValue;
};
return <div>{someFunc()}</div>
}
});
Autor twierdzi, że poprzez przypisanie znaczącej nazwy someFunc kod będzie łatwiejszy do odczytania. Uważam, że poprzez wstawienie funkcji i dodanie komentarza można uzyskać ten sam efekt.
Przykład 2 (funkcje niezwiązane)
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>;
}
});
Tak zazwyczaj to robimy (unikasz konieczności przekazywania stanu i rekwizytów):
React.createClass({
renderSomePart: function () {
return (
<div>
<p>{this.props.myProp}</p>
<p>{this.state.myState}</p>
</div>
);
},
render: function () {
return <div>{this.renderSomePart()}</div>;
}
});
Chociaż te wzorce kodowania są technicznie poprawne, nie są spójne z resztą bazy kodu ani ze stylem i wzorami, na które Facebook (autor React) wskazuje w tutorialach i przykładach.
Musimy utrzymywać szybkie tempo, aby dotrzymywać terminów, a ja nie chcę niepotrzebnie obciążać zespołu. Jednocześnie musimy być na rozsądnym poziomie jakości.
Usiłuję sobie wyobrazić siebie jako programistę obsługi klienta, który boryka się z takimi niespójnościami jak te (każdy element może wymagać zrozumienia innego sposobu robienia tego samego).
Pytanie:
Jaka jest wartość postrzegana przez klienta i deweloperów zajmujących się konserwacją spójnej bazy kodu w porównaniu z pozostawieniem takich niezgodności i potencjalnym ich rozprzestrzenianiem się?