Versioning services - taritinth/sw-dev-tools-and-environments-project GitHub Wiki
Semantic versioning
Versioning services ที่ทีมเราเลือกใช้ คือ Sematic Versioning
โดยมีหลักการ คือ เลข version นั้นจะประกอบไปด้วย 3 ส่วนหลัก คือ
MAJOR.MINOR.PATCH
Example version
1.5.30
Major (Breaking change)
Major
จะเปลี่ยนเมื่อมีความเปลี่ยนแปลงที่ค่อนข้างใหญ่ ที่ Incompatible กับ version ปัจจุบัน อาจจะเป็นการเพิ่มความสามารถชุดใหญ่ หรือกระทั่งเปลี่ยนแปลงแนวคิดของเครื่องมือ (อย่างเช่น AngularJS ไปเป็น Angular 2)
Minor (Backwords compatible)
Minor
จะเปลี่ยนเมื่อมีการเพิ่มความสามารถใหม่ๆ (Feature) เข้ามา ถอดออก หรือปรับแต่งรูปแบบการทำงาน และเป็นการอัพเดตที่ไม่ทำให้เกิด Major change หรือการเปลี่ยนแปลงสำคัญ
Patch (Big fixed)
Patch
จะเปลี่ยนเมื่อมีการแก้ข้อผิดพลาดของระบบ เรียกว่าเป็นตัวเลขที่บ่งบอกถึงการแก้ไขบั๊ก
ข้อดี
- มีความเป็นสากล สามารถทำความเข้าใจได้ง่าย แม้จะไม่ใช่ตัวผู้พัฒนาก็ตาม
- มีการแบ่งแยกเป็น 3 ส่วนที่ชัดเจนและสมเหตุสมผล
- ช่วยอธิบายว่ามีการเปลี่ยนแปลงประเภทใดบ้าง นอกจากนี้ยังแจ้งให้ผู้ใช้ทราบเกี่ยวกับการอัปเดตซอฟต์แวร์ที่เป็นไปได้
- ช่วยให้ทราบว่าผลิตภัณฑ์รุ่นใดที่ไม่รองรับการใช้งานเวอร์ชันเก่าอีกต่อไป
ข้อเสีย
- อาจจะสามารถแบ่งตัวเลขได้หลายส่วนกว่านี้ อย่างเช่น อาจจะมีเลขส่วนที่ 4 หรือ 5 เพิ่ม เพื่อบ่งชี้ถึงการเปลี่ยนแปลงที่ละเอียดและเจาะจงกว่าเดิม
- หากผู้พัฒนาไม่มีความเข้าใจในโมเดลของ sementic versioning อาจทำให้เกิดการตัดสินใจเปลี่ยนแปลง major version ที่มีความเสี่ยงสูง ในเวลาที่ไม่ถูกต้องได้
วิธีการปรับปรุง
- เรียนรู้เกี่ยวกับระบบอัตโนมัติเพิ่มเติมเพื่อช่วยลดการเข้าใจผิดพลาดที่เกิดจากตัวผู้พัฒนาได้