ทำไมเราควร Refactor code กันนะ?

SUWAN KHP.
odds.team
Published in
2 min readJan 31, 2024

🙏 สวัสดีผู้ที่หลงเข้ามาอ่านทุกคนครับ เนื่องจากผมได้มีโอกาสรู้จัก และได้เริ่มอ่านหนังสือ Refactoring Improving the Design of Existing Code ผมเลยคิดว่าไหนๆ ก็ได้อ่านแหละก็เคยคิดว่าอยากจะแชร์สิ่งที่อ่าน และความคิดเห็นของผมเล็กๆน้อยๆ ให้คนที่สนใจเรื่องนี้ได้ลองอ่านกันว่าการ Refactor code มันจะเจ๋งสักแค่ไหน

ซึ่งนี่ก็คงเป็น blog แรกสำหรับเรื่องการ Refector code โดนผมตั้งในเขียน blog นี้ที่เป็นเรื่องเกี่ยวกับ “ทำไมเราควร Refactor code กันนะ?” เป็น blog แรก เพราะผมรู้สึกว่า ถ้าคนที่เข้ามาอ่านแล้วสามารถทำความเข้าใจ หรือ ตระหนักได้ว่าทำไมเราถึงควรที่จะ Refector code กัน และมันจะส่งผลอะไรขนาดไหนกันถ้าเราไม่ทำมัน!!? โดยผมก็หวังว่าหลังจากที่ทุกคนได้อ่าน blog นี้จบก็อยากให้ทุกคนได้มีความรู้สึกแบบแอ๊ะในใจ เกี่ยวกับเรื่องการ Refector code ในแบบที่ผมกำลังจะสื่อออกไปในบทความของ blog นี้อย่างที่ผมได้ตั้งใจไว้ได้ครับ

Refactoring Improving the Design of Existing Code, Book….

อย่างแรกก็ต้องขอเกริ่นก่อนว่าการ Refactor code มันไม่ได้เป็นสิ่งที่เหมือนยาครอบจักรวาล ที่จะสามารถแก้ได้ทุกปัญหาของซอฟต์แวร์ แต่มันเป็นเหมือนเครื่องมือที่มีค่าชนิดนึงที่ เหมือนเครื่องมือคู่ใจที่ช่วยให้เราควบคุมโค้ดของเราได้ดียิ่งขึ้นอย่างที่มันควรจะเป็น

คุณลองนึกภาพโค้ดที่เป็นเหมือนบ้านคุณดูสิ ถ้าเกิดว่าบ้านของคุณไม่เคยทำความสะอาดเลย ปล่อยของรกๆ ไว้เต็มไปหมด พอจะหาของทีก็วุ่นวาย ซึ่งโค้ดที่ไม่เคย Refactor หรือเขียนมาไม่ดีก็เหมือนกัน อ่านยาก เดาทางยาก แก้บั๊กก็ลำบากอีก ไหนจะเพิ่มฟีเจอร์ใหม่ก็ยิ่งช้าเข้าไปใหญ่ใช่ม๊า

จากที่ผมได้เกริ่นมาขนาดนี้แล้วคุณก็คงจะสงสัยกันแล้วสิว่า Refactoring มันมีประโยชน์แค่ไหนเชียวซึ่งผมก็ได้ลองเขียนข้อดีของมันมา 5 ข้อดังนี้ 🤔

  1. 🌱 โค้ดเข้าใจง่ายขึ้น: การ Refactoring ก็เหมือนกับการจัดระเบียบบ้าน เก็บของให้เป็นที่เป็นทาง ถ้าในเชิง coding ก็จะอ่านโค้ดก็ง่าย เดาทางcodeได้เร็ว แก้บั๊ก เพิ่มฟีเจอร์ใหม่ก็ฉับไว
  2. 🌱 ป้องกันหนี้ทางเทคนิค: คิดภาพหนี้ทางเทคนิคมันเหมือนกู้เงินมาสร้างบ้าน ขอแค่เสร็จไว ไม่สนความสวยงาม ความแข็งแรงไม่มี พอจะปรับปรุงบ้านทีก็ยุ่งยาก ลำบากใจจัด การ Refactoring ก็เหมือนปรับปรุงโครงสร้างบ้านให้ดีขึ้น และป้องกันปัญหาที่จะเกิดขึ้นในอนาคต
  3. 🌱 ทำงานเร็วขึ้น: เร็วขึ้นยังไงกันนะ? ลองนึกว่าการ Refactoring ก็เหมือนกับการลับคมเครื่องมือ ถ้าเครื่องมือคมมันคงก็ใช้งานง่าย สะดวก และโค้ดที่ Refactor แล้วก็ช่วยให้เราทำงานได้เร็ว แถมมีประสิทธิภาพมากขึ้นอีกต่างหาก
  4. 🌱 ทีมทำงานร่วมกันง่ายขึ้น: มันเหมือนกับมีภาษากลางที่พูดกันในทีม ทุกคนพูดภาษาเดียวกัน เข้าใจกันง่าย โค้ดที่ Refactor แล้วก็เช่นกัน ทุกคนในทีมอ่าน เข้าใจ แก้ไขได้ง่าย ทำงานร่วมกันก็คล่อง
  5. 🌱 ภูมิใจและสนุกกับการทำงาน: การ Refactoring ก็เหมือนกับการสร้างผลงานศิลปะ ชิ้นหนึ่งที่สวยงาม และประณีต ซึ่งแน่นอนมันก็ย่อมสร้างความภูมิใจให้กับผู้สร้างมั้ยนะ 😂 โค้ดที่ Refactor แล้วก็เช่นกัน สะอาด อ่านง่าย ทำให้เรารู้สึกภูมิใจ และสนุกกับการทำงานมากขึ้น

เรามาขยายความกันอีกสักนิดเพื่อให้เราเห็นภาพมากขึ้นกันดีกว่า . . .

🥎 Refactoring ช่วยออกแบบซอฟต์แวร์ให้ดีขึ้นยังไง?

นึกภาพโครงสร้างภายในของบ้าน (เหมือนกับสถาปัตยกรรมของซอฟต์แวร์) ถ้าไม่เคย Refactor ปล่อยให้โค้ดรกๆ คนอื่นมาต่อเติมทีก็งง เพราะไม่เห็นภาพรวม เหมือนบ้านที่ปลูกมั่วๆ ต่อเติมไปเรื่อยๆ จะอยู่อาศัยก็ลำบาก การ Refactoring ช่วยให้โค้ดสะอาด อ่านง่าย มองเห็นภาพรวมชัดเจน จะปรับแต่ง หรือจะแก้ไขก็ง่าย

อีกเรื่องคือ ลดโค้ดที่ซ้ำกัน เหมือนกับมีของใช้หลายชิ้น ทำหน้าที่เหมือนกัน เปลืองที่ เปลืองงบ โค้ดที่ซ้ำกันก็เหมือนกัน ทำให้โค้ดเยอะ ใช้พื้นที่เยอะ แก้ไขทีก็งง แก้ทีก็ไม่รู้จะแก้ครบหรือเปล่า หรือแก้ซ้ำๆในหลายๆที่

🎾 Refactoring ช่วยให้เข้าใจซอฟต์แวร์ง่ายขึ้นยังไง?

เขียนโปรแกรมเหมือนคุยกับคอมพิวเตอร์ เราบอก คอมทำ แต่เวลาคนอื่นมาอ่านโค้ดเราทีนั้นเขาจะเข้าใจมั้ย? ซึ่งมันสำคัญนะ! ลองนึกภาพเขียนโค้ดส่งๆ ไม่คิดถึงคนอื่น พออีก 6 เดือน เพื่อนมาแก้ไขที งงเป็นไก่ตาแตก ซึ่งการ Refactoring ก็จะช่วยให้โค้ดเราอ่านง่าย เข้าใจง่าย คนอื่นมาต่อยอดก็สะดวก

หรือบางทีเพื่อนคนนั้นก็คือตัวเราเองนั่นแหละ! คนขี้เกียจอย่างเราชอบลืม เก็บโค้ดไว้ในหัวก็กลัวลืมบ้างไรบ้าง

🏀 Refactoring ช่วยหาบั๊กยังไง?

ยิ่งเข้าใจโค้ด ก็ยิ่งจับผิดเก่ง! ยอมรับว่าเราไม่เก่งหาบั๊กเท่าไหร่ แต่พอ Refactoring ปรับโครงสร้าง ปรับความคิด มันเหมือนส่องไฟสว่างๆ บั๊กที่เคยมองไม่เห็นก็โผล่มาให้เห็นชัดเจนขึ้น

สุดท้ายแล้วมีสิ่งหนึ่งที่หนังสือเขาบอกไว้และผมชอบมากคือเขาบอกว่า ถึงแม้จะไม่มีหลักฐานทางวิทยาศาสตร์มายืนยัน แต่จากประสบการณ์ของผู้เขียนหนังสือและนักพัฒนาเก่งๆ หลายคนที่เขาเคยคุยด้วย มันพิสูจน์ได้ว่า Refactoring มีประโยชน์จริงๆ

เมื่อยี่สิบปีที่แล้ว เค้าเชื่อกันว่าการออกแบบที่ดีต้องเสร็จก่อนเขียนโค้ด ไม่อย่างนั้นโค้ดจะยิ่งแย่ลง แต่การ Refactoring มาเปลี่ยนความคิดนั้น! เราปรับปรุงออกแบบโค้ดที่มีอยู่ได้ตลอด ทำให้การออกแบบดีขึ้นเรื่อยๆ ตามความต้องการของโปรแกรมที่เปลี่ยนไป

เพราะการออกแบบที่ดีตั้งแต่แรกทำได้ยาก การ Refactoring จึงกลายเป็นเครื่องมือที่สำคัญ มันช่วยให้เราพัฒนาฟีเจอร์ใหม่ๆ ได้รวดเร็ว มีคุณภาพ และดีงามยิ่งๆขึ้นไป!!!

Blog ต่อไปเดี๋ยวผมจะมาแชร์ต่อเรื่อง “เมื่อไหร่ที่เราควร Refactor code”

เพื่อไม่ให้พลาด content ที่ผมคิดว่าดีจากผมก็สามารถกดติดตามไว้ได้เลย
และขอบคุณทุกคนที่อ่านมาจนถึง line นี้ และหวังว่าจะเป็นประโยชน์กับทุกคนครับ ขอบคุณครับ ❤️‍🔥

--

--