คุณเคยสังเกตไหมว่า ทุกครั้งที่เราใช้แอพหรือเกมบนโทรศัพท์ มันมักจะมีการอัปเดตและพัฒนาตลอดเวลา? คุณเคยสงสัยไหมว่าเจ้าหมายเลขที่ตามหลังชื่อแอพ, เช่น "Version 1.2.3" นั้นมีความหมายอย่างไร? เจ้าตัวเลขเหล่านี้น่ะสิ มันก็คือ "Semantic Versioning" หรือในภาษาไทยอาจเรียกว่า การกำหนดเวอร์ชันแบบมีความหมาย ซึ่งมีหลักการและความสำคัญในโลกของการเขียนโปรแกรมอย่างมากเลยล่ะ!
การกำหนดเวอร์ชันแบบมีความหมายหรือ Semantic Versioning (SemVer สั้นๆ) เป็นมาตรฐานที่ช่วยกำหนดการปล่อยเวอร์ชันของซอฟต์แวร์ได้อย่างชัดเจนและเป็นระบบ เพื่อให้ผู้พัฒนาและผู้ใช้งานเข้าใจง่ายว่าแต่ละเวอร์ชันนั้นเพิ่ม, แก้ไข หรือเปลี่ยนแปลงจากเวอร์ชันก่อนหน้านี้ยังไงบ้าง
การกำหนดเวอร์ชันด้วย SemVer จะมีรูปแบบเป็นหมายเลข 3 ชุด คั่นด้วยจุด ซึ่งแทนด้วย `MAJOR.MINOR.PATCH` หรือก็คือ "หมายเลขใหญ่.หมายเลขกลาง.หมายเลขเล็ก" นั่นเอง
- MAJOR version เมื่อเราเปลี่ยนแปลงที่ทำให้ซอฟต์แวร์ไม่สามารถใช้ร่วมกับเวอร์ชันเก่าได้ (เช่น คนที่เขียนโค้ดอื่นๆเข้ากันไม่ได้กับเวอร์ชันใหม่) - MINOR version เมื่อเราเพิ่มฟีเจอร์ใหม่หรือปรับปรุงแต่ยังคงใช้ร่วมกับเวอร์ชันเก่าได้ - PATCH version เมื่อเราแก้ไขบั๊กหรือข้อผิดพลาดในซอฟต์แวร์ที่ไม่มีผลกระทบต่อการใช้งานของเวอร์ชันเก่าสำหรับตัวอย่างที่ง่ายที่สุด ลองนึกถึงเกมที่เด็กๆชอบเล่นกัน เช่น "เกมสร้างโลก". เป็นไงล่ะ? ลองนึกภาพว่าเดิมทีเกมมีเวอร์ชัน 1.0.0 แล้วจู่ๆ ผู้พัฒนาก็เพิ่มสัตว์ใหม่ๆ เข้าไปในเกม มันจะกลายเป็นเวอร์ชัน 1.1.0 นั่นเอง เพราะมีการเพิ่มฟีเจอร์ใหม่ (MINOR version ขึ้น) ขณะที่ผู้เล่นเก่ายังเล่นได้เหมือนเดิม และถ้าหากพบว่ามีบั๊ก, เช่น สัตว์ใหม่บางตัววิ่งผ่านภูเขาได้ แล้วเราก็แก้ไขมัน ตอนนั้นเกมดังกล่าวจะกลายเป็นเวอร์ชัน 1.1.1 (PATCH version ขึ้น).
ความเข้าใจที่มีต่อ Semantic Versioning มันช่วยให้นักพัฒนาซอฟต์แวร์เข้าใจดีว่าควรจะต้องปฏิบัติต่อการเปลี่ยนแปลงของซอฟต์แวร์อย่างไร หากพวกเขาทำการอัปเกรดไลบรารีหรือองค์ประกอบอื่นๆ มันช่วยลดความสับสนและผิดพลาดได้เป็นอย่างดี
นอกจากนี้ สำหรับผู้ที่ทำงานร่วมกับทีมโปรแกรมเมอร์คนอื่นๆ การใช้ SemVer เป็นวิธีที่ดีในการสื่อสารว่าแต่ละคนทำงานกันตรงจุดไหนและอะไรจำเป็นต้องให้ความสนใจก่อน
เช่น ถ้าเรากำลังทำงานกับซอฟต์แวร์ที่มีการพึ่งพาไลบรารีตัวหนึ่งที่ใช้ Semantic Versioning แล้วเห็นว่าอัปเดตล่าสุดมีหมายเลขเวอร์ชันจาก 2.3.4 เปลี่ยนเป็น 3.0.0 เราก็จะรู้ทันทีว่ามีการเปลี่ยนแปลงครั้งใหญ่ที่อาจทำให้ซอฟต์แวร์ของเราต้องปรับเปลี่ยนเพื่อให้เข้ากันได้
ยิ่งไปกว่านั้น Semantic Versioning ยังช่วยกำหนดความคาดหวังให้กับผู้ใช้ได้ดี เพื่อที่พวกเขาจะได้รู้ว่าจะต้องเผชิญกับการเปลี่ยนแปลงระดับไหน เวลาที่พวกเขาอัปเกรดซอฟต์แวร์ที่พวกเขาใช้งานอยู่
การทำความเข้าใจ Semantic Versioning เป็นสิ่งที่สำคัญมากสำหรับนักเขียนโปรแกรม เพราะมันหมายถึงการเรียนรู้วิธีที่จะประกาศอย่างมีประสิทธิผลว่า “สิ่งนี้คืออะไร” และ “มันจะเข้ากับส่วนที่เหลือได้หรือไม่” นอกจากนี้ยังมีประโยชน์ในการจัดการกับความคาดหวังของผู้ใช้งาน ตลอดจนการสื่อสารกับทีมพัฒนา
ด้วยเหตุนี้ ที่ EPT เราให้ความสำคัญในการสอนการใช้งาน Semantic Versioning เพื่อให้นักศึกษาของเราเข้มแข็งในการช่วยพัฒนาซอฟต์แวร์ที่ตนเองหรือหน่วยงานกำลังทำงานอยู่ให้ดียิ่งขึ้น และสามารถสื่อสารกับทีมได้อย่างมีประสิทธิผล เพราะภาษาของการพัฒนาซอฟต์แวร์ที่ดีคือความชัดเจนและตรงไปตรงมานั่นเอง!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: semantic_versioning software_development programming_principles software_updates version_control major_version minor_version patch_version code_compatibility software_features bug_fixes software_management communication_in_programming team_collaboration ept
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com