Skip to content

Code refactoring แล้วดียังไง?

การทำ “Code refactoring” หรือการปรับปรุงโค้ดเดิมให้ดีขึ้น ซึ่งคำว่าดีในที่นี้ก็แล้วแต่จะนิยามกันไป จุดประสงค์หลักของการทำคือทำให้โค้ดที่มีอยู่เป็น “Clean code”

  • ลดความซับซ้อนของโค้ด
  • ทำให้คนอ่านโค้ดรู้เรื่องให้มากที่สุด
  • แก้ไข/เปลี่ยนแปลงได้ง่าย
  • ทำให้โค้ดแต่ละส่วนไม่ขึ้นต่อกันมีความเป็น modular

ทั้ง 4 ข้อที่ผมยกขึ้นมาข้างบนจะเห็นว่าไม่เกี่ยวกับ performance เลยนะครับ เพราะคนละเรื่องกันฉะนั้น ขอข้ามไปก่อน (อาจจะเขียนอีกตอน….ถ้าขยัน)

การทำ refactor ผลของมันเน้นไปที่ “คน” มากกว่าซึ่งก็คือตัว developer เองเพราะยิ่งทำ refactor บ่อยๆ โค้ดของเราก็จะดีขึ้น อ่านง่ายขึ้น สมมุติว่าพักไปนานๆ มาจับอีกทีก็ไม่ต้องงแล้วว่าส่วนนั้นเอาไว้ทำอะไร หรือถ้าทำงานกับคนอื่น คนที่ทำงานด้วยก็ใช้เวลาในการทำความเข้าใจน้อยลง มีเวลาทำงานมากขึ้น ทำงานได้เร็วขึ้น

การที่เราได้ “clean code” หลังทำ refactor เป็นผลโดยตรงก็จริง แต่จริงๆ แล้วมันก็ช่วยพัฒนาทักษะของ developer ไปด้วย สมมุติว่า เราเป็น developer ที่ไม่เคย refactor ตัวเองเลย ได้โจทย์มาใหม่ก็เขียนใหม่อยู่เสมอ ผ่านไปหลายปีก็ทำแบบนี้ ถามว่าเกิดอะไรขึ้นครับ?

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

ข้อ 2 การเขียนโค้ดซ้ำไปซ้ำมามันทำให้ developer คนนั้นไม่ได้อะไรทักษะอะไรเพิ่มจากงานที่ทำอยู่ ไม่ต่างจากงาน routine ทั่วไปแทนที่จะได้เอาเวลาไปพัฒนาโค้ดให้ดีขึ้น จริงอยู่ที่โค้ดเวอร์ชันแรกอาจจะแย่แต่ถ้าทำ refactor บ่อยๆ ผมเชื่อครับว่าโค้ดมันจะดีขึ้น ระหว่างที่ refactor developer ก็อาจจะพบเทคนิคใหม่ๆ ให้เรียนรู้ก็เป็นการเพิ่มทักษะไปในตัว

ข้อ 3 โค้ดของคุณจะล้าสมัย จากข้อ 2 ที่บอกไว้ครับว่าระหว่าง refactor อาจจะพบเทคนิคใหม่ ซึ่งบางทีการทำงานบางอย่างตัวภาษามัน built-in ฟังก์ชันมาให้เราก็ไม่ต้องเขียนเองลดจำนวนโค้ดและความยุ่งยากลงไปได้อีก หรือบางทีเราอาจจะเจอฟีเจอร์ใหม่ของตัวภาษาที่ทำให้โค้ดกระชับ เข้าใจง่ายขึ้นก็ได้

ฉะนั้นถ้าเป็นไปได้ก็ทำ code refactoring กันบ่อยๆ เถอะครับ พัฒนาสิ่งเดิมให้มันดีขึ้นดีกว่า ดีกว่าสร้างสิ่งใหม่ตลอดแต่มีแต่สิ่งแย่ๆ

แต่! เหนือสิ่งอื่นใดเขียนให้มันทำงานตามที่เราต้องการได้ก่อนค่อย refactoring นะครับ

Be First to Comment

Leave a Reply

Your email address will not be published.