Я являюсь частью команды консультантов, внедряющих новое решение для клиента. Я отвечаю за большинство обзоров кода на клиентской кодовой базе (React и javascript).
Я заметил, что некоторые члены команды используют уникальные шаблоны кодирования до такой степени, что я могу выбрать файл случайным образом, чтобы сказать, кто был автором одного стиля.
Пример 1 (одноразовые встроенные функции)
React.createClass({
render: function () {
var someFunc = function () {
...
return someValue;
};
return <div>{someFunc()}</div>
}
});
Автор утверждает, что, присвоив значимое имя someFunc, код будет легче читать. Я считаю, что, добавив функцию и добавив комментарий, можно добиться того же эффекта.
Пример 2 (несвязанные функции)
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>;
}
});
Вот как мы обычно это делаем (избегая необходимости передавать состояния и реквизиты):
React.createClass({
renderSomePart: function () {
return (
<div>
<p>{this.props.myProp}</p>
<p>{this.state.myState}</p>
</div>
);
},
render: function () {
return <div>{this.renderSomePart()}</div>;
}
});
Хотя эти шаблоны кодирования технически правильны, они не согласуются ни с остальной базой кода, ни со стилем и шаблонами, на которые намекает Facebook (автор React) в руководствах и примерах.
Нам нужно идти быстрыми темпами, чтобы успеть вовремя, и я не хочу излишне обременять команду. В то же время мы должны быть на приемлемом уровне качества.
Я пытаюсь представить себя разработчиком обслуживания клиентов, сталкивающимся с подобными несоответствиями (каждый компонент может потребовать от вас понимания другого способа сделать то же самое).
Вопрос:
Какова ценность того, что клиент и его разработчики воспринимают как единообразную кодовую базу по сравнению с тем, чтобы такие несоответствия сохранялись и могли распространяться?