- หน้าแรก
- ทาสเงินเดือนพลิกเกม ปฏิวัติวงการไอทีเริ่มจากเสี่ยวมี่
- บทที่ 5 อะไรคือการเขียนโปรแกรมเชิงป้องกันกันนะ?
บทที่ 5 อะไรคือการเขียนโปรแกรมเชิงป้องกันกันนะ?
บทที่ 5 อะไรคือการเขียนโปรแกรมเชิงป้องกันกันนะ?
บทที่ 5 อะไรคือการเขียนโปรแกรมเชิงป้องกันกันนะ?
จากนั้นก็ตรวจดูแผงควบคุม ไม่ปรากฏข้อผิดพลาดใด ๆ
เปิดหน้าเว็บ ใส่ที่อยู่ URL ใช้เมาส์คลิกฟังก์ชัน ทุกอย่างเป็นปกติดี
ทำอย่างนี้ไปเรื่อย ๆ ฟังก์ชันต่าง ๆ ก็เสร็จสมบูรณ์ในพริบตา
เฉินโม่ขยับนิ้วเล็กน้อยพลางว่า
“จริง ๆ แล้วกระบวนการปกติต้องเขียนยูนิตเทสต์ก่อน แล้วค่อยทำฟังก์ชัน แต่หนึ่งคือเวลาจำกัด สองคือแค่งานระดับนี้ยังไม่จำเป็นต้องเขียนเทสต์หรอก เท่านี้งานของโปรเจกต์ที่เธอรับผิดชอบก็เสร็จแล้ว ช่วงนี้คงไม่ต้องทำโอทีแล้วล่ะ”
ฉีเหมิงเหมิงได้เห็นกับตาว่าโค้ดค่อย ๆ เพิ่มขึ้นเรื่อย ๆ จากน้อยเป็นมาก เต็มไปด้วยกฎเกณฑ์อันลึกล้ำ สีหน้าเต็มไปด้วยความเคารพเลื่อมใส
โค้ดพวกนี้ในมืออาจารย์ เหมือนเด็กตัวเล็ก ๆ ที่เชื่อฟังคำสั่งอย่างเคร่งครัด ไม่เกเรเลยแม้แต่นิดเดียว
ฟังก์ชันที่เธอวางแผนไว้ว่าต้องใช้เวลาทำงานหนึ่งสัปดาห์ พออยู่ในมืออาจารย์กลับใช้เวลาไม่ถึงสิบห้านาทีด้วยซ้ำ
ดูเวลาแล้วผ่านไป 13 นาที 14 วินาที นี่แหละคือช่องว่างระหว่างเธอกับอาจารย์
“โค้ดทั้งหมดเมื่อครู่ จริง ๆ แล้วมีชื่อเรียกรวมๆ ว่า ‘การเขียนโปรแกรมเชิงป้องกัน’!”
ไม่รู้ว่าเป็นภาพหลอนไหม ฉีเหมิงเหมิงรู้สึกว่าอาจารย์หยุดไปครู่หนึ่งอย่างไม่มีเหตุผลตอนพูดประโยคสุดท้าย
“การเขียนโปรแกรมเชิงป้องกันมันคืออะไรกันคะ?”
เฉินโม่นั่งกลับที่เดิม โบกมือเรียกให้อีกฝ่ายเข้ามาดูใกล้ ๆ
“การเขียนโปรแกรมเชิงป้องกันคือแนวทางเขียนโค้ดที่ละเอียดรอบคอบและระมัดระวัง”
“หลักการคือต้องคาดการณ์ปัญหาต่าง ๆ ที่อาจจะเกิดขึ้นไว้ล่วงหน้า แล้วก็เตรียมมาตรการป้องกันเอาไว้ก่อน”
“นิสัยการเขียนโปรแกรมแบบนี้จะเน้นที่การป้องกันข้อผิดพลาดและควบคุมอย่างเข้มงวด เพื่อลดผลลัพธ์เสียหายรุนแรงที่อาจเกิดขึ้น”
“โค้ดที่ฉันทำให้ดูเมื่อครู่เป็นแนวทางจาก ‘ด้านสว่าง’ ถ้าจะพูดตามสำนวนโบราณก็คือ ‘ฟ้าสูงหนึ่งศอก ปีศาจก็สูงหนึ่งวา’”
“ต่อไปที่ฉันจะสอนเธอ คือวิถี ‘ด้านมืด’ ของการเขียนโปรแกรมเชิงป้องกัน”
“จริง ๆ เมื่อก่อนก็ไม่มีอะไรแบบนี้หรอก แต่เพราะการช่วงชิงระหว่างบริษัทกับพนักงานหนักขึ้นเรื่อย ๆ ซึ่งฝ่ายหลังมักตกเป็นรอง”
“ก็มีรุ่นพี่บางคนคิดวิธีนี้ขึ้นมา ด้วยการเขียนโค้ดที่อ่านยากเย็นสับสน ทำให้ตัวเองยังมีไพ่ติดมือ แม้โดนไล่ออก โค้ดที่ตัวเองเขียนก็จะดูแลยากสุด ๆ”
“ด้วยวิธีนี้ ในระดับหนึ่งก็เท่ากับทำให้ตัวเอง ‘ถูกแทนที่ได้ยาก’ กลายเป็นว่าบริษัทเองก็ไม่กล้าทำอะไรมาก”
“ถ้าไม่ใช่เพราะเธอเป็นศิษย์ของฉัน ฉันไม่ค่อยเอาวิชานี้ออกมาเปิดเผยง่าย ๆ หรอก เพราะถ้าใช้แล้วจะมีผลตามมาใหญ่หลวง คล้าย ‘เพลงหมัดเจ็ดพิษ’ ที่ทำร้ายคนอื่นก็จริงแต่ก็เป็นภัยแก่ตัวด้วย”
“แต่ตอนนี้วิทยายุทธ์ของอาจารย์แก่กล้าแล้ว จนผลข้างเคียงพวกนี้ไม่มีผลอีกต่อไป”
พูดจบ เฉินโม่ก็เปิดโค้ดโมดูลฟังก์ชันหลักที่ตัวเองเคยรับผิดชอบขึ้นมา แล้วตกอยู่ในความเงียบไปครู่หนึ่ง
ตอนนี้ พอเขามองโค้ดที่ตัวเองเคยเขียนมาก่อน ก็แทบดูไม่ได้เลย เพราะมันก็แค่ทำให้ฟังก์ชันเสร็จ ๆ ไม่มีความสวยงามหรือการออกแบบที่ดีอะไร ถึงจะดีกว่าโค้ดของฉีเหมิงเหมิงอยู่บ้าง แต่ก็ไม่ได้เหนือกว่ากันมาก
ผ่านไปสักพัก เฉินโม่ถึงได้ขยับหน้าจอให้หันไปทางฉีเหมิงเหมิงนิดหน่อย
ครั้งนี้เขาโหมกำลังเต็มที่ สองมือรัวแป้นพิมพ์ป๊อกแป๊กอย่างฉับไว แทบเห็นเป็นเงาซ้อน นี่คือพลังที่เกิดจากประสบการณ์ช่ำชองผสานกับร่างกายที่ยังหนุ่ม
เขารู้สึกพอใจกับสภาพตัวเองตอนนี้เป็นอย่างยิ่ง วัยหนุ่มนี่มันดีจริง ๆ แล้วก็ได้ยินเสียงอุทานที่กลั้นไม่อยู่ของฉีเหมิงเหมิง
“ว้าว อาจารย์ พี่เร็วมาก!”
คำนี้ไม่ควรพูดเลยนะ…
เฉินโม่กระตุกหางคิ้วนิดหนึ่ง เสียงพิมพ์ที่เคยราบรื่นก็ชะงักไปช่วงสั้น ๆ ก่อนจะลดเกียร์ความเร็วลงหน่อย
โค้ดต้นฉบับถูกแก้จนไม่เหลือเค้าเดิม แต่เฉินโม่ไม่ได้แค่ต่อเติมอะไรเหมือนต่อบล็อกตามใจ แต่แก้ให้สลับซับซ้อนเท่าที่จะเป็นไปได้
ทั้งวนลูปซ้อนกันหลายชั้น ใช้ไวยากรณ์ขั้นสูง ใส่ “ประตูล็อกซ้อนประตู” ลงในโค้ดหลายชั้น อีกทั้งยังแทรกลงไปในไฟล์ตั้งค่าและฐานข้อมูลอีกด้วย
เดิมทีโค้ดแค่ 20 บรรทัดก็ทำงานได้อยู่แล้ว แต่ไม่กี่นาทีผ่านไปกลับพองเป็นเกือบพันบรรทัด แม้จะแค่ฟังดูเหมือนมาก แต่พอเห็นผ่าน ๆ ก็ดูเหมือน “มีความงามในโค้ด” อยู่ แต่ถ้าลองอ่านจริง ๆ ถึงกับทำให้ขนลุกซู่ ยิ่งเป็นคนเก่งเท่าไหร่ก็ยิ่งจมลึกยากถอนตัว
เหมือนจากเรื่องที่พูดให้จบในประโยคสองประโยค แต่ถูกขยายออกเป็นหลายสิบบท เปรียบเทียบเหมือนเดินขึ้นเนินเขาแล้วเจอโจรภูเขา แต่พอดูดี ๆ กลายเป็น 108 ผู้กล้าแห่งเขาเหลียงซาน ไล่เรียงชื่อเล่น ชื่อจริง แฉอดีตเบื้องหลังสัมพันธ์กันหมด อ่านแค่ผ่าน ๆ ยังต้องอยากสบถออกมาว่า “โหดจริง ๆ ไม่ทำร้ายคนให้ตายคาที่ก็ไม่เลิก!”
ระหว่างที่เขียนโค้ด เฉินโม่จะหยุดอธิบายความหมายทีละนิด ๆ ให้ฉีเหมิงเหมิงฟังอย่างค่อยเป็นค่อยไป
ส่วนฉีเหมิงเหมิงก็มองดูโค้ดกองพะเนินนี้ ที่ภายใต้ “หัตถ์เทวะ” ของอาจารย์ เปลี่ยนรูปไปเรื่อย ๆ ทั้งแตกออก ยุบรวม ผสานกัน แล้วก็แยกอีก จนสุดท้ายแทบอ่านไม่ออก สีหน้าราวกับตะลึงงัน
ตอนนั้นมีพนักงานคนหนึ่งเดินผ่าน
ตอนแรกเขาเดินผ่านที่นั่งของเฉินโม่ไปแล้ว แต่เหมือนหูจะได้ยินอะไรบางอย่างก็ร้อง “เอ๊ะ” แล้วเดินถอยกลับมาดูอยู่ด้านหลัง
【เฉินโม่พิมพ์โค้ดเร็วขึ้นนะ เกือบจะทันฉันแล้ว สงสัยตบหน้าบอสแล้วได้โบนัสเรอะ?】
【อ้าว โค้ดที่ทดสอบเสร็จแล้วทำไมแก้ต่ออีกล่ะ?】
【นี่กำลังปรับปรุงประสิทธิภาพ? แต่แก้ขนาดนี้เรียกว่ารื้อใหม่หมด ช่วงจะส่งงานตรวจรับแล้วนะ จะหาเรื่องใส่ตัวหรือไง?】
【เฮ้ย ไวยากรณ์แบบนี้ใช้ได้ด้วยเหรอ? ได้ความรู้ใหม่แฮะ ไม่เสียเที่ยวที่กลับมาดู】
【แต่ทำไมยิ่งทำยิ่งดูเหมือน ‘รีเวิร์สรื้อโค้ด’ ให้ซับซ้อนหนักขึ้นเรื่อย ๆ อย่างนี้มันยังรันได้อยู่หรือเปล่า แปลกคนจริง ๆ】
สีหน้าของเขาจากตอนแรกที่สนใจค่อย ๆ เปลี่ยนเป็นงงงวย พอฟังเฉินโม่อธิบาย ก็ดูเหมือนจะเข้าใจแล้วก็กลับมางงอีก สลับกันไปเหมือนสัญญาณไฟจราจรที่สี่แยก
ครึ่งชั่วโมงต่อมา พอเฉินโม่แก้โค้ดส่วนหลักทั้งหมดของตัวเองเสร็จ ลองรันโปรแกรมดูก็ไม่ขึ้นข้อผิดพลาดใด ๆ แถมลองทดสอบการทำงานอีกไม่กี่นาที ก็ผ่านทุกอย่างฉลุย
“นี่แหละที่เรียกว่า ‘การเขียนโปรแกรมเชิงป้องกัน’ เข้าใจไหม?”
ฉีเหมิงเหมิงลืมตาแป๋วส่ายหัวอย่างช่วยไม่ได้ ดูก็เหมือนไม่เข้าใจ
เฉินโม่พยักหน้าอย่างพึงพอใจ
“ไม่เข้าใจนั่นแหละถูกแล้ว อีกไม่กี่วันฉันกลับมาอ่านโค้ดที่ฉันเขียนอาจจะยังไม่เข้าใจเลยก็ได้ นี่คือที่สุดของขอบเขต ‘ในตามีโค้ด ในใจไร้โค้ด’”
“ก็คงได้แต่บอกว่า หวังเต๋อฟา จงโชคดีเถอะ ขอให้ตอนตรวจรับงานฟังก์ชันพวกนี้อย่ามีการปรับแก้อะไรอีก ไม่อย่างนั้น…”
“ไม่อย่างนั้นจะเป็นยังไงคะ?”
เฉินโม่ทำมือปุ้งเป็นรูปดอกไม้ พร้อมเปล่งเสียง BOOM ออกจากปาก
“ศิลปะก็เหมือนการระเบิด!”
ส่วนเรื่องจะส่งมอบระบบผ่านไหม สำหรับเด็กฝึกงานอย่างเธอไม่ใช่เรื่องน่ากังวล ฉีเหมิงเหมิงเองกลับสงสัยอีกเรื่องมากกว่า
“อาจารย์คะ ตอนพี่เขียนโค้ดเมื่อกี้ ไม่ต้องคิดก่อนเลยเหรอคะ? มันเหมือนทำทีเดียวจบลื่นไหลมาก…”
เธอนึกคำบรรยายไม่ออก สุดท้ายเลยทำได้แค่ยกนิ้วโป้ง
“ฉันคิดตลอดนะ ตอนที่หยุดแรก ๆ ประมาณนาทีเดียวฉันวางโครงสร้างไว้ในหัวแล้ว พอเริ่มลงมือพิมพ์ตรงนี้ สมองฉันก็คิดไปถึงโค้ดส่วนถัดไปไว้ล่วงหน้า คล้ายกับเวลากรองน้ำมันลงคอขวด แต่เพราะความชำนาญล้วน ๆ น่ะ”
“นี่แหละสิ่งที่เธอต้องเรียนรู้ต่อไป พูดไปตอนนี้ก็คงจำไม่หมด เอาล่ะ วันนี้อาจารย์ถ่ายทอดวิชาหลายอย่างแล้ว เธอไปย่อยก่อนก็แล้วกัน”
เฉินโม่ยกแก้วน้ำขึ้น เตรียมจะไปเติมน้ำดื่ม พอลุกขึ้นถึงได้รู้ว่าด้านหลังตัวเองมีคนยืนอยู่
แข็งทื่อเหมือนรูปปั้นเลย