Screen Shot 2558-01-05 at 7.56.48 AM
เรื่องที่ 21 ที่นักพัฒนาควรรู้ และ เข้าใจก็คือ Put Everything Under Version Control

คุณทำการเก็บทุกสิ่งทุกอย่าง
ที่จำเป็นต่อการพัฒนา software ไว้ใน Version Control กันหรือไม่ ?

หรือว่ายังคงใช้การ backup แบบบ้านๆ กันอยู่นะ ?

ตัวอย่างของ Version Control เช่น

  • Git
  • Subversion
  • Mercurial
  • CVS (เก่าไปล่ะไม่น่ามีใครใช้นะ)

การใช้งานก็ง่ายแสนง่าย

ให้ทำการติดตั้ง Version Control ที่คุณเลือกแล้ว
ทำการสร้างที่เก็บข้อมูลเรียกว่า repository
นำไฟล์ต่างๆ ที่จำเป็นต่อการพัฒนา software มาใส่
จากนั้นเรียนรู้ 2 ขั้นตอนหลักๆ ในการใช้งาน Version Control คือ

  1. การ commit การเปลี่ยนแปลงไปยัง repository
  2. การ update ข้อมูลในเครื่องคุณให้ใหม่ล่าสุดตาม repository

เพียงเท่านี้ก็สามารถใช้งาน Version Control ได้แล้ว

ประโยชน์ของ Version Control มีอะไรบ้าง ?

เมื่อทุกสิ่งที่อย่างที่จำเป็นต่อการพัฒนา software อยู่ใน Version control แล้ว
คุณสามารถย้อนดูประวัติของการเปลี่ยนแปลงได้ (History)
คุณสามารถย้อนหลับไปใช้ version ก่อนหน้าใดๆ ก็ได้ อย่างง่าย
ทำให้คุณสามารถแก้ไข code โดยปราศจากความกลัว
เช่น

  • กลัวว่าจะทับของคนอื่นหรือไม่ ( ปกติเราก็ทำการ backup หรือ copy ไปไว้ที่อื่นก่อนแก้ไขใช่หรือไม่ ? )
  • กลัวว่าจะไม่รู้ว่าแก้ไขตรงไหน อย่างไร ก็เลยทำการเขียน comment ใน code ไว้แทน

Version control นั้นคุณสามารถ
ใส่ tag แตก branch เพื่อให้คุณสามารถ tracking งานได้ง่าย
สามารถย้อนกลับมาดูแต่ละ version ของการเปลี่ยนแปลงได้ง่าย

แต่แปลกนะ ทีมพัฒนาส่วนใหญ่มักละเลยการใช้ Version control ไป
ด้วยเหตุผลต่างๆ นานา

ยิ่งในการพัฒนา software ต้องทำงานเป็นทีม

นั่นคือมีคุณพัฒนาหลายๆ คน
ดังนั้น ถ้าคุณไม่ทำการจัดเก็บข้อมูลต่างๆ เช่น source code ไว้ใน Version control
แล้วคุณจะจัดการเมื่อเกิด code conflict กันอย่างไร ?
แล้วคุณจะทำการ merge code อย่างไร ?
แล้วคุณจะรู้ได้อย่างไรว่า code ชุดไหนมันคือตัวล่าสุด ?
แล้วจะย้อนกลับไป version ก่อนหน้าได้อย่างไร ?

ดังนั้น ใช้ Version control เถอะนะครับ
อย่าทิ้งภาระไว้ให้ลูกหลานเลย

อย่าเก็บแต่ source code อย่างเดียวนะ !!

หลายๆ ทีม มักจะเก็บแต่ source code ไว้ใน Version control
ซึ่งมันเป็นความคิดที่ไม่เข้าท่า หรือ ผิดอย่างมหันต์เลยนะ
เราสามารถนำไฟล์ทุกๆ อย่าง ย้ำว่าทุกๆ อย่างที่เกี่ยวกับการพัฒนา
ไว้ใน Version control ได้หมด
ตัวอย่างเช่น

  • Source code
  • เอกสารการพัฒนาต่างๆ เช่น requirement, design, analysis และ user manual เป็นต้น
  • เครื่องมือต่างๆ ที่ใช้งาน
  • Build script
  • Test case
  • Test script
  • Artwork ต่างๆ
  • Library ต่างๆ

ลองคิดดูนะว่า
ถ้าคุณเก็บทุกอย่างไว้ด้วยกัน หรือ ไว้ใน Version control แบบนี้
คุณจะสะดวกสบายกว่าเดิมไหม ?
ที่แต่ละอย่างในการพัฒนา มันแยก กระจัดกระจายไปคนละที่ คนละระบบกันเลย

รวมทั้งเรายังสามารถทำเรื่องการ backup ได้ง่ายอีกด้วย
เผื่อว่า Disk ของเครื่องที่ติดตั้ง Version control มันพัง

ที่สำคัญคือ คุณจะมั่นใจได้ว่า
คุณยังคงทำงานอยู่บน version ล่าสุดอยู่ตลอดเวลา

ปกติ คุณรู้ไหมว่า คุณพัฒนา software อยู่บน version ไหนกัน ?

แนะนำกฏการใช้งาน Version control ที่มีประสิทธิภาพ

  • แยกการ commit เป็น commit ย่อยๆ ตามกลุ่มของการแก้ไข อย่ารวมเป็น commit ใหญ่ เพราะว่า มันจะยากต่อการ tracking หรือ ย้อนกลับมาดูในอนาคตได้
  • แต่ละ commit ควรมี commit message ที่ดี อธิบายการเปลี่ยนแปลงนั้นได้ชัดเจน อย่างน้อยใน commit message ควรบอกว่า ทำการแก้ไขเปลี่ยนแปลงอะไร อย่างไร
  • สุดท้าย สำคัญมากๆ อย่าทำการ commit code ที่มันจะทำการขั้นตอนการ build พังโดยเด็ดขาด ไม่เช่นนั้นคุณจะกลายเป็นตัวปัญหาอย่างแน่นอน

ดังนั้นมาใช้ Version control กันเถอะครับ
แล้วชีวิตคุณจะปลอดภัยมากขึ้น
สามารถมีชีวิตอยู่กับระบบ Legacy ได้ง่ายและดีขึ้น
รวมทั้ง ยังทำให้คุณหลีกเลี่ยงจากความผิดพลาดได้ง่ายอีกด้วย

วันนี้คุณใช้ Version control แล้วหรือยัง !!