Screen Shot 2557-10-19 at 9.58.05 AM
พอดีไปอ่านเจอ พบว่ามี Refactoring Manifesto ด้วย
เขียนโดย Lasse Koskela และ Bas Vodde
โดยได้รับแรงบันดาลใจมาจาก Repair Manifesto
ดังนั้น จึงเอามาแปลในแบบของผม
เผื่อใครสนใจจะเอาไปลองทำตามดูได้นะ
มันสำคัญมากๆ สำหรับการพัฒนา Software

เริ่มต้นกันเลยดีกว่า

Refactoring Manifesto
Because the world need better code

ง่ายๆ คือ ต้องทำ refactoring เพราะว่า ต้องการ code ที่ดีกว่าเดิม (ไม่ใช่เขียนใหม่นะ)

ประกอบไปด้วย 10 ข้อ ดังต่อไปนี้

1. Make your products live longer!

การ Refactoring  หมายถึงการพูดคุยเรื่องโอกาสหรือหนทาง
ที่จะทำให้ product ของคุณอยู่ได้อย่างยั่งยืน และ ยาวนาน
ดังนั้น

  • อย่าละเลยการ refactoring
  • ทำมันบ่อยๆ ที่ละเล็กละน้อย
  • แก้ไขปละปรับปรุง
  • ทำมันไปเรื่อยๆ อย่าหยุด

และ Refactoring มันจะช่วยลดความซับซ้อนของ code
เพื่อให้เราสามารถตอบรับการเปลี่ยนแปลงได้อย่างดี
ไม่เช่นนั้นมันจะ เสียน้อยเสียยากเสียมากเสียง่าย นะครับ

2. Design should be simple so that it is easy to refactor

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

ในฐานะ Product designer หรือ developer อย่างเราๆ ควรที่จะ
ทำการออกแบบ product ที่สามารถเปลี่ยนแปลงได้ง่าย
code ที่เขียนต้องสะอาด มีเหตุมีผล
code ที่เขียนออกมาต้องเข้าใจได้ง่าย ไม่มีการเข้ารหัส กำกวม

ลองคอดดูว่า มันจะส่งผลดีต่อตัวเรา และ ลูกค้า เพียงใด

3. Refactoring is not rewriting

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

4. What doesn’t kill it makes it stronger

ในทุกครั้งที่เราทำการ refactoring code นั่นคือการทำให้ code ดีขึ้นเรื่อยๆ
ไม่ใช่เป็นการฆ่า หรือ ทำให้ code แย่ลงไป

5. Refactoring is a creative challenge

การ Refactoring มันคือความท้าทาย
ว่าเรามีคิดสร้างสรร อย่างไร
ว่าเรามีจินตนาการที่ดี เพื่อทำให้ code มันดีขึ้น

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

6. Refactoring survives fashion

การ Refactoring มันไม่ใช่ fashion หรือ trend อะไรเลย
มันไม่มีวันจบสิ้น แต่มันจะต้องทำไปอย่างต่อเนื่อง

7. To refactor is to discover

มันคือการค้นหา
ยิ่งคุณทำการ Refactor code หรือ ส่วนต่างๆ ของระบบมากเท่าไร
คุณจะยิ่งได้เรียบรู้ในสิ่งที่คุณไม่คาดคิด
ว่ามันสามารถทำงานได้ด้วยหรือ ?
รวมทั้งส่วนที่มันทำงานไม่ได้

ดังนั้น ระหว่างทาง มันสนุกกว่าเป้าหมายจริงๆ

8. Refactor – even in bad times!

ถ้าคุณคิดว่า Refactoring นั่น คือช่วงเวลาที่คุณต้องหยุดมาทำ
หรือมาทำเมื่อ code ของมันแย่แล้วนะ …
ถ้าคุณยังคิดแบบนี้ ให้เลิกคิด หรือ เปลี่ยนความคิดไปได้เลย

เนื่องจาก Refactoring นั้นไม่ใช่การเพิ่ม effort ที่ชอบลงหรือวางแผนในใบงาน
แต่มันคือ สิ่งที่คุณต้องคิด และ ทำอยู่ตลอดเวลา ในช่วงที่คุณพัฒนา หรือ สร้างมันขึ้นมา

9. Refactoring is about independence

อ่านครั้งแรก นี่มันคือ การประกาศอิสรภาพ กันเลยทีเดียว
เราต้องเป็นนายของ code ไม่ใช่เป็นทาสของมัน
ยิ่งพูดถึง Legacy code แล้ว น้ำตาอาจจะนองหน้าได้

ดังนั้น ถ้า code ที่เขียนเกิดข้อผิดพลาดขึ้นมา
สิ่งที่เราต้องทำทันที คือ การ refactor และ ทำให้มันดีขึ้นกว่าเดิม
ไม่ใช่ปล่อยให้มันเป็นอย่างนั้นล่ะ ดีอยู่แล้ว

10. You can refactor anything, even total crap

เราสามารถ Refactor ได้ทุกสิ่งทุกอย่าง ถึงแม้สิ่งนั้นมันจะแย่มากๆ

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

สุดท้ายของ Refactoring Manifesto คือ  Stop Rewriting. Start Refactoring