Migration: JS→TS, Class→Hooks
งาน migration เช่น JavaScript→TypeScript หรือ class component→hooks เป็นงานน่าเบื่อที่ Claude ทำแทนได้ดีและเร็ว
เมื่อเรียนจบบทนี้ คุณจะ…
- อธิบายงาน migration ได้
- ใช้ Claude ช่วยเปลี่ยนโค้ดได้
- วางแผนการเปลี่ยนโค้ดเป็นส่วนๆ ได้

การย้ายโค้ด (Code Migration) คืออะไร? ทำไมต้องทำ?
ลองนึกภาพว่าคุณกำลังจะย้ายบ้านจากบ้านเก่าที่คุ้นเคยไปบ้านใหม่ที่ดีกว่า ทันสมัยกว่า หรือเหมาะกับชีวิตปัจจุบันของคุณมากกว่า การย้ายโค้ดก็คล้ายกันครับ มันคือการปรับปรุงโค้ดโปรแกรมที่เราเขียนไว้แล้ว ให้เปลี่ยนไปใช้เทคโนโลยีใหม่ๆ รูปแบบการเขียนใหม่ๆ หรือไลบรารี (เครื่องมือเสริม) ที่ดีกว่าเดิม
ทำไมเราต้องย้ายโค้ด? ก็เพื่อทำให้โปรแกรมของเราทำงานได้ดีขึ้น ปลอดภัยขึ้น บำรุงรักษาง่ายขึ้น และตามทันโลกเทคโนโลยีที่เปลี่ยนแปลงเร็วครับ บางทีโค้ดเก่าอาจจะทำงานช้า มีช่องโหว่ หรือไม่รองรับฟีเจอร์ใหม่ๆ การย้ายโค้ดจึงจำเป็น เหมือนการอัปเกรดมือถือให้ใช้แอปใหม่ๆ ได้นั่นแหละครับ แต่การย้ายโค้ดอาจเป็นงานที่น่าเบื่อและใช้เวลานาน ซึ่งนี่แหละคือจุดที่ Claude เข้ามาช่วยเราได้ดีมากๆ เลย
ตัวอย่างการย้ายโค้ดยอดนิยมที่ Claude ช่วยได้
มีหลายสถานการณ์เลยครับที่ Claude สามารถเป็นผู้ช่วยชั้นดีในการย้ายโค้ดให้เรา ตัวอย่างที่พบบ่อยๆ เช่น:
1. **จาก JavaScript (JS) ไป TypeScript (TS):** JavaScript เป็นภาษาที่ยืดหยุ่นมาก แต่บางครั้งก็ทำให้เกิดข้อผิดพลาดได้ง่าย TypeScript เข้ามาช่วยเพิ่ม 'ประเภท' (Type) ให้กับข้อมูล ทำให้โค้ดของเรามีระเบียบมากขึ้น ตรวจจับข้อผิดพลาดได้ตั้งแต่ตอนเขียน และทำงานร่วมกับคนอื่นได้ง่ายขึ้น Claude สามารถช่วยเพิ่ม Type ให้กับโค้ด JS ของเราทีละไฟล์ได้เลย
2. **จาก React Class Component ไป React Function Component + Hooks:** สำหรับคนที่เขียน React (ไลบรารีสร้างหน้าเว็บ) เดิมเรานิยมเขียนแบบ Class Component แต่ตอนนี้ Function Component และ Hooks เป็นที่นิยมมากกว่าเพราะเขียนง่ายกว่า อ่านง่ายกว่า และจัดการสถานะ (State) ของโปรแกรมได้ดีกว่า Claude สามารถแปลงโค้ดจากรูปแบบเก่าไปเป็นรูปแบบใหม่นี้ให้เราได้
3. **จากไลบรารีเก่าไปไลบรารีใหม่:** บางครั้งเราใช้เครื่องมือเสริม (ไลบรารี) ในโปรแกรมมานานแล้ว แต่มีไลบรารีใหม่ที่ดีกว่า เร็วกว่า หรือมีคนดูแลมากกว่า เช่น จาก moment.js ไปเป็น date-fns สำหรับจัดการวันที่และเวลา Claude สามารถช่วยแปลงการใช้งานจากไลบรารีเก่าไปเป็นไลบรารีใหม่ได้ครับ
กลยุทธ์ 'ค่อย ๆ ทำทีละส่วน' (Phased Migration)
การย้ายโค้ดทั้งโปรแกรมพร้อมกันทีเดียวก็เหมือนกับการรื้อบ้านทั้งหลังพร้อมกัน ซึ่งเสี่ยงมากครับ! ถ้ามีอะไรผิดพลาดจะหาจุดแก้ไขได้ยากและอาจทำให้โปรแกรมพังได้เลย เราจึงควรใช้กลยุทธ์ที่เรียกว่า 'ค่อย ๆ ทำทีละส่วน' หรือ 'Phased Migration'
แนวคิดคือ เราจะแบ่งงานย้ายโค้ดออกเป็นชิ้นเล็กๆ ทำทีละส่วน (เช่น ย้ายทีละไฟล์ หรือทีละโมดูล) พอทำเสร็จหนึ่งส่วนก็ทดสอบทันทีว่าโปรแกรมยังทำงานได้ถูกต้องเหมือนเดิมไหม ถ้าทุกอย่างเรียบร้อยดี ค่อยไปทำส่วนต่อไป การทำแบบนี้จะช่วยลดความเสี่ยงลงไปได้มาก ทำให้เราควบคุมสถานการณ์ได้ดีขึ้น และถ้ามีปัญหา ก็จะรู้ได้ทันทีว่าปัญหาน่าจะเกิดจากส่วนที่เราเพิ่งย้ายไปนั่นเองครับ
ให้ Claude ช่วยย้ายโค้ด: เริ่มต้นด้วยตัวอย่าง 1 ไฟล์
ก่อนจะให้ Claude ช่วยย้ายโค้ดทั้งหมด เราไม่ควรโยนโค้ดทั้งหมดให้เขาทำทันทีครับ เหมือนเวลาเราจะให้เพื่อนช่วยทำงาน เราก็ต้องอธิบายให้เพื่อนเข้าใจก่อน และอาจจะให้เพื่อนลองทำตัวอย่างเล็กๆ ก่อน เพื่อดูว่าเพื่อนเข้าใจสิ่งที่เราต้องการไหม
การให้ Claude ทำตัวอย่างแค่ 1 ไฟล์ก่อน จะช่วยให้เราได้ตรวจสอบว่า Claude เข้าใจสิ่งที่เราต้องการจริงๆ หรือเปล่า และโค้ดที่ Claude สร้างออกมานั้นเป็นไปในทิศทางที่เราต้องการหรือไม่ ถ้าเราพอใจกับผลลัพธ์จากไฟล์แรกแล้ว ค่อยให้ Claude ทำไฟล์ที่เหลือต่อได้เลยครับ วิธีนี้ช่วยประหยัดเวลาและลดความผิดพลาดได้มาก
วิธีการใช้ Prompt กับ Claude อย่างละเอียด
นี่คือ Prompt (คำสั่ง) ที่เราจะใช้กับ Claude เพื่อให้เขาช่วยย้ายโค้ดให้เราครับ:
ช่วย migrate ไฟล์นี้จาก [เดิม] เป็น [ใหม่] รักษา behavior เดิมไว้ทั้งหมด ทำให้ดูเป็นตัวอย่างก่อน 1 ไฟล์ แล้วฉันจะให้ทำต่อ
เรามาดูกันว่าแต่ละส่วนหมายถึงอะไรและเราจะใช้มันยังไง:
1. **[เดิม]:** ให้คุณใส่ลักษณะของโค้ดปัจจุบันที่คุณมีอยู่ เช่น JavaScript, React Class Component, REST API Call หรือ การเรียกใช้ moment.js
2. **[ใหม่]:** ให้คุณใส่ลักษณะของโค้ดที่คุณต้องการให้เป็น เช่น TypeScript, React Function Component + Hooks, GraphQL API Call หรือ การเรียกใช้ date-fns
3. **รักษา behavior เดิมไว้ทั้งหมด:** นี่สำคัญมากครับ! หมายความว่าไม่ว่า Claude จะแปลงโค้ดไปเป็นแบบไหน แต่โปรแกรมของเราจะต้องยังทำงานได้เหมือนเดิมทุกประการ ห้ามมีฟังก์ชันไหนเปลี่ยนไปหรือพังเด็ดขาด
4. **ทำให้ดูเป็นตัวอย่างก่อน 1 ไฟล์ แล้วฉันจะให้ทำต่อ:** นี่คือการบอก Claude ว่าให้ทำแค่ไฟล์เดียวเป็นตัวอย่างก่อนนะ ถ้าฉันโอเคแล้ว ฉันจะให้ทำที่เหลือเอง
- 1. เตรียมไฟล์โค้ดที่คุณต้องการให้ Claude ช่วยย้าย (เช่น ไฟล์
MyComponent.js). - 2. เปิดหน้าต่างแชทกับ Claude.
- 3. คัดลอก Prompt ที่สมบูรณ์แล้วไปวาง เช่น:
ช่วย migrate ไฟล์นี้จาก React Class Component เป็น React Function Component + Hooks รักษา behavior เดิมไว้ทั้งหมด ทำให้ดูเป็นตัวอย่างก่อน 1 ไฟล์ แล้วฉันจะให้ทำต่อ. - 4. วางเนื้อหาโค้ดของไฟล์ที่คุณต้องการให้ Claude ย้ายลงไปในแชท (หลังจาก Prompt).
- 5. ตรวจสอบผลลัพธ์ที่ Claude ให้มาอย่างละเอียด ลองนำโค้ดที่ Claude สร้างให้ไปรันและทดสอบดูว่าทำงานได้ถูกต้องตามที่ต้องการไหม.
- 6. ถ้าพอใจกับผลลัพธ์ ก็สามารถบอก Claude ให้ทำไฟล์อื่นๆ ต่อไปได้ โดยอาจจะให้โค้ดทีละไฟล์ หรือถ้ามั่นใจมากพอ อาจจะให้โค้ดหลายไฟล์พร้อมกัน (แต่แนะนำทีละไฟล์จะปลอดภัยกว่า).
สรุปและเคล็ดลับเพิ่มเติม
การย้ายโค้ดเป็นงานที่อาจจะน่าเบื่อและซับซ้อน แต่ด้วย Claude เราสามารถทำให้มันง่ายและเร็วขึ้นได้ครับ กุญแจสำคัญคือการทำทีละส่วนเล็กๆ (Phased Migration) การทดสอบโค้ดอย่างสม่ำเสมอหลังการเปลี่ยนแปลงแต่ละครั้ง และการใช้ Claude อย่างชาญฉลาดโดยให้เขาทำตัวอย่างแค่ 1 ไฟล์ก่อน เพื่อให้เราได้ตรวจสอบและปรับแก้แนวทางก่อนที่จะเดินหน้าทำทั้งหมดครับ จำไว้ว่า Claude เป็นผู้ช่วยที่ยอดเยี่ยม แต่เราเองก็ต้องเป็นผู้กำกับที่เก่งด้วยนะครับ!
- เหมาะกับ migration น่าเบื่อ
- ทำเป็นเฟส ทดสอบระหว่างทาง
- ทำตัวอย่าง 1 ไฟล์ก่อน