“แก́ไข” และ “ฟıกซı́” เป́นคําพǮ0งพายทẹ́งทủปกỏiของคํากริยา “แก้ไข” แสดงถึงกระบวนการขจัดบักหรือข้อผิดพลาดในโคด ในสภาพแวดล้อมทางวิชาชีพทั้งสองคํานี้ใช้แทนกันได้ แม้ว่า “ฟิกซ์” อาจหมายถึง “บนทึกการเปลี่ยนแปลง” ผ่านคอมมิต ตาม Atlassian Git Guide กระบวนการแก้ไขบักประกอบด้วยหลายขั้นตอน: การสร้างซ้ํา การวินิจฉย การเขียน และการตรวจสอบการแก้ไข แนวทางการดำเนนงานอย�างเปนระบบ ในการแกไขชวยลดความเสยงของข�อผดพลาดซ�ํ�า
ประเด็นสำคญ
การแกไข (ฟกซ) — การแกไขข�อผดพลาดในโค�ดโปรแกรม การกำหนดคาหรอข�อมล คำศพทมาจากภาษาองกฤษ “to fix” และเปนหนงในคำทพบบอยทสดในคำศพทของโปรแกรมเมอร การแกไขอาจเปนเรองงายๆ — การแกไขพมพผดในบรรทดเดยว — หรอซบซอน สงผลตอสถาปตยกรรมของโมดลทงหมด
คำกรยา “ฟกซ” ม ความหมายสองเทา: นอกจากการแกไขบกแลว ยงหมายถง “บนทกการเปลยนแปลงในระบบควบคมรน” จากภาษาองกฤษ “commit/fix” ในทงสองกรณ ผลลพธเหมอนกน — โคดดข�นกวาเดม ในชมชนวชาชพ ความแตกตางระหวางคำเหลานนอยมาก และทงสองคำใชเปนคำพองความหมายเตมรปแบบ
ความสามารถในการแกไขบกอยางถกตองเปนหนงใน ทกษะสำคญของนกพฒนา ขอผดพลาดเปนสงหลกเลยงไมไดในโครงการใดๆ และความเรวในการแกไขสงผลโดยตรงตอคณภาพของผลตภณฑและความพงพอใจของผใช แนวทางการทำงานอยางเปนระบบรวมถงกระบวนการทชดเจน: การสรางซ���ำ การวนจฉย การเขยนทดสอบ การแกไข การตรวจสอบโคด
วงจรชวตของบก — ลำดบของสถานะทข�อผดพลาดผานตงแตชวงทตรวจพบจนถงการขจดอยางสมบรณ การทำความเขาใจวงจรนชวยจดการกระบวนการแกไขและไมพลาดขนตอนทสำคญอยางยง ในกระบวนการทวไป บกผานหาชนตอนหลก
ขนตอนแรก — การตรวจพบ บก ซงอาจเกดขนผานการทดสอบ การตดตามข�อผดพลาด ข�อคดเหนจากผใช หรอรวยงานครชอตโนมต บกถกลงทะเบยนในระบบตดตามพรอมขนตอนการสรางซำ�ำ สภาพแวดลอม พฤตกรรมทคาดหวงและจรง คำอธบายทดเปนพนฐานของการแกไขทเรว
นกพฒนา สรางซำ�ำ บกในสภาพแวดลอมของตน โดยทำตามขนตอนจากคำอธบาย หกบกไมสรางซำ�ำไดอยางคงท ตองมขอมลเพมเตม: บบทก หนวยความจำ ดมป การบนทกหนาจอ หลงจากการสรางซำ�ำ การวนจฉย เรมตน — การคนหาสาเหตในโคด ในขนตอนนมกใชเครองมอแกไขข�อผดพลาด การบนทก และการสรางโปรไฟล
กอนแกไข แนะนำใหเขยน ทดสอบทสรางซำ�ำบก — นรบประนวาการแกไขไดผลจรงและปองกนการเกดซำ�ำในอนาคต หลงจากทดสอบลมเหลวตามข�อผดพลาดทคาดหวง นกพฒนาเขยนโคดแกไข การทดสอบตองผานหลงการแกไขและเพมลงในชดการทดสอบการกลบคน
func testLoginWithInvalidCredentials() {
let result = AuthService().login(
email: "wrong@test.com",
password: "wrong"
)
XCTAssertEqual(result, .failure(.invalidCredentials))
}
การแกไขถกสงไป ตรวจสอบโคด — เพอนรวมงานตรวจสอบวาการแกไขถกตอง ไมทำใหโมดลทเกยวของเสยหาย และเปนไปตามมาตรฐานโคด หลงการตรวจสอบ การแกไขผานการทดสอบการกลบคน ในวงจรอดมคต บกจะไมถกถอวาปดจนกวาการทดสอบจะผานและการเปลยนแปลงถกยอมรบโดยผตรวจสอบ
การแกไขเขาไปในสาขาหลกและเตรยมใชงานในสภาพแวดลอมการผลต หลงการเตรยมใชงาน ทำมงาน ตรวจสอบ บกในสภาพแวดลอมการผลตและตดตามตวดชน: จำนวณข�อผดพลาดทเกยวของในรวยงานครชอลดลงหรอไม บกถกปดในระบบตดตามพรอมรนทถกแกไข
Hotfix — การแกไขเหตการณฉกเฉนสำหรบข�อผดพลาดวกฤตทสงผลตอผใชในสภาพแวดลอมการผลตอยในปจจบน การแกไขนดำเนนการนอกวงจรการพฒนาปกต: สรางสาขาแยกจากสาขาเวอรชน ทำการเปลยนแปลงนอยทสด ทดสอบสาขาและเตรยมใชงานทนท หลง hotfix การเปลยนแปลงถกรวมเขากบสาขาหลกของการพฒนาอยางจำเปน
Bugfix — การแกไขตามแผนทผานวงจรชวตเตมรปแบบ: จากการลงทะเบยนถงการตรวจสอบโคดและการทดสอบการกลบคน Bugfix เปนสวนหนงของสปรนตปกตและไมตองการเตรยมใชงานฉกเฉน ความแตกตางระหวาง hotfix และ bugfix คอ ความเรงดวนและขนตอนการดำเนนงาน ไมใชความซบซอนของการเปลยนแปลงเอง
| พารามเตอร | Hotfix | Bugfix |
|---|---|---|
| ความเรงดวน | วกฤต | ภายในสปรนต |
| กระบวนการ | เรงรด ตรวจสอบนอยทสด | เตมรปแบบ: ทดสอบ ตรวจสอบ QA |
| สาขา | จากสาขาเวอรชน | จาก develop หรอ feature |
| การเตรยมใชงาน | ทนท | เวอรชนถดไป |
Hotfix จำเปนเมอมการคบพบปญหาในสภาพแวดลอมการผลตทขวางกนการทำงานหลก: เกตเวยการชำระเงนไมทำงาน การพสจนตวตนลมเหลว ผใชเหนหนาจอวาง ในกรณเชนน ชวโมงการหยุดทำงานทกชวโมงคดเปนคาใชจายและความไววางใจ Hotfix ควรนอยทสด — เฉพาะการเปลยนแปลงเปาหมายทกำจดปญหา โดยไมปรบโครงสรางโคดทเกยวของ
Bugfix เหมาะสมสำหรบข�อผดพลาดทไมวกฤต: บกทมองเหน การครชทไมวกฤตบนหนาจอทไมใชหนาหลก ความไมถกตองในขอมลการวเคราะห การแกไขเหลานผานวงจรการตรวจสอบเตมรปแบบและรวมอยในเวอรชนตามกำหนดการ Bugfix ตามแผนชวยหลกเลยงการกลบคนทการเปลยนแปลงทเรงรบอาจนำมาซงได
กระบวนการแกไขทถกตอง — ไมใชแคการเขยนโคด แตเปนชดของระเบยบวนยททำใหการแกไขปลอดภยและคงทน มาดลำดบการกระทำทควรปฏบตในแตละ bugfix โดยไมคำนงถงความซบซอน
กอนเขยนโคด สรางบกซำ�ำ ในสภาพแวดลอมการพฒนาของคณ หากไมสรางซ้ำ�ำได คณจะไมสามารถตรวจสอบวาการแกไขไดผล ใชขอมลเดยวกนกบผใช — คดลอกการกำหนดคา ธงฟเจอร เวอรชน API หากบกไมสรางซำ�ำในเครองได ใหเพมบบทกชวคราวในสภาพแวดลอมสเตจนง
แนวปฏบตทดคอ เขยนทดสอบกอน ทสรางบกซำ�ำและลมเหลว นใหประโยชนสองประการ: ประการแรก คณพสจนวาบกมอย จรง และประการทสอง หลงการแกไข ทดสอบผาน ยนยนการแกไข ทดสอบยงคงอยในฐานโคดเปนการปองกนการกลบคน
@Test
fun testCartTotalWithPromotion() {
val cart = Cart().apply {
addItem(Item("T-shirt", 29.99))
addPromotion(Promotion("10OFF"))
}
Assert.assertEquals(26.99, cart.total())
}
การเปลยนแปลงนอยทสด เปนหลกการหลกของ bugfix อยาปรบโครงสรางโคดขางเคยงระหวางทาง อยาแกไขบกอนๆในคอมมตเดยวกน แตละคอมมตควรแกไขปญหาเพยงหนงปญหา นชวยใหการตรวจสอบโคด การยอนกลบเมอจำเปน และการทำความเขาใจประวตการเปลยนแปลงงายขน หนงการเปลยนแปลง — หนงคอมมต
หลงจากการเขยนแกไข ใหรน ชดทดสอบการกลบคนทงหมด หากการแกไขกระทบตอโมดลรวม ใหตรวจสอบทดสอบของโมดลทเกยวของดวย รนโปรแกรมตรวจสอบโคดและตรวจสอบวาโคดเปนไปตามมาตรฐานของโครงการ หลงจากนนจงสราง Pull Request
ระบบตดตามบก เปนสวนหนงทแยกไมออกของกระบวนการแกไข ระบบเหลานชวยใหไมพลาดข�อผดพลาดใดๆ มอบหมายผมรบผดชอบ ตดตามสถานะและรวบรวมสถต การเลอกเครองมอขนอยกบขนาดของทำมงานและกระบวนการ แตฟงกชนพนฐานคลายกน: การสรางงาน วงจรชวต ลำดบความสำคญ การรวมกบ VCS
Jira เปนระบบทพบบอยทสดสำหรบโครงการองคกร รองรบขนตอนการทำงานทยดหยน ฟลดทกำหนดเองและการรวมกบ Bitbucket/GitHub GitHub Issues เปนระบบตดตามในตวดะดวกสำหรบทำมงานขนาดเลกและกลาง รวมกบ Pull Requests Linear เปนระบบตดตามสมยใหมทมอ�นเตอรเฟซนอยทสดและความเรวสง ไดรบความนยมในสตารทอป
ขอแรก: แกไขสาเหต ไมใชอาการ หากแอปครชเนองจาก nil อยาหอโคดทงหมดใน if let — เขาใจวาเหตใดคาจงเปน nil ขอสอง: การแกไขควรรวมถงทดสอบทพสจนการแกไข ขอสาม: อยาแกไขสองบกในคอมมตเดยวกน — นทำใหการยอนกลบยงยาก ขอส: เพมลงกไปงานในระบบตดตามในคำอธบายคอมมต
คำถามทพบบอย
ทงสองคําหมายถง การแกไขบก “ฟกซ” มความหมายเพมเตม — การบนทกการเปลยนแปลงใน Git ในการสอสารทางวชาชพ คําเหลานใชแทนกนได
ใช conventional commits: fix(module): short description ตวอยาง: fix(auth): handle nil in login response เพมลงกไปยง issue ในสวนเนอหาของคอมมต
ใช นเปน แนวปฏบตทแนะนํา การทดสอบทสรางบกซํายนยนปญหาและปองกนการกลบคน หากบกยากตอการสรางซําในการทดสอบ อยางนอยใหเขยนทดสอบการรวมระบบ
เพม บบทกแบบขยาย ในสภาพแวดลอมสเตจนง รวบรวมรวยงานครชจากผใช ถามผทดสอบเกยวกบสภาพแวดลอมทแนนอน บางครงบกขนอยกบรนของระบบปฏบตการหรอรนของอปกรณ
Hotfix — เมอปญหาขวางกนผใชในสภาพแวดลอมการผลตในตอนน Bugfix — สําหรบข�อผดพลาดอนๆทงหมดทรอเวอรชนถดไปได
สรป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม