ฉันเป็นส่วนหนึ่งของทีมที่ปรึกษาที่ใช้โซลูชันใหม่สำหรับลูกค้า ฉันรับผิดชอบในการทบทวนโค้ดส่วนใหญ่ใน codebase ฝั่งไคลเอ็นต์ (ตอบโต้และจาวาสคริปต์)
ฉันสังเกตเห็นว่าสมาชิกในทีมบางคนใช้รูปแบบการเข้ารหัสที่ไม่เหมือนใครจนถึงจุดที่ฉันสามารถเลือกไฟล์แบบสุ่มโดยบอกว่าใครเป็นผู้แต่งจากสไตล์คนเดียว
ตัวอย่างที่ 1 (ฟังก์ชั่นอินไลน์แบบครั้งเดียว)
React.createClass({
render: function () {
var someFunc = function () {
...
return someValue;
};
return <div>{someFunc()}</div>
}
});
ผู้เขียนระบุว่าด้วยการกำหนดชื่อที่มีความหมายให้กับบางส่วนการตัดรหัสจะง่ายต่อการอ่าน ฉันเชื่อว่าการใช้ฟังก์ชั่นและเพิ่มความคิดเห็นแทนการใช้เอฟเฟกต์เดียวกันสามารถทำได้
ตัวอย่างที่ 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>;
}
});
แม้ว่ารูปแบบการเข้ารหัสเหล่านี้จะถูกต้องในทางเทคนิค แต่ก็ไม่สอดคล้องกับส่วนที่เหลือของ codebase หรือสไตล์และรูปแบบที่ Facebook (ผู้เขียน React) แนะนำในบทช่วยสอนและตัวอย่าง
เราจำเป็นต้องดำเนินการอย่างรวดเร็วเพื่อส่งมอบตรงเวลาและฉันไม่ต้องการสร้างภาระให้กับทีมโดยไม่จำเป็น ในขณะเดียวกันเราต้องอยู่ในระดับคุณภาพที่เหมาะสม
ฉันพยายามนึกภาพตัวเองในฐานะนักพัฒนาการบำรุงรักษาของลูกค้าที่ต้องเผชิญกับความไม่สอดคล้องกันเช่นนี้ (ทุกองค์ประกอบอาจต้องการให้คุณเข้าใจวิธีการทำสิ่งเดียวกัน)
คำถาม:
คุณค่าที่ลูกค้ารับรู้และผู้พัฒนาการบำรุงรักษาของฐานรหัสที่สอดคล้องกันคืออะไรและช่วยให้ความไม่สอดคล้องกันเช่นนี้จะยังคงอยู่และอาจแพร่กระจาย?