Screen Shot 2558-10-01 at 9.10.11 AM
ภาษา Swift เป็นภาษาที่เกิดขึ้นมาไม่นาน
และมีคุณสมบัติที่ดีมากมาย
แต่สิ่งหนึ่งที่ developer ไม่ควรสร้างขึ้นมาก็คือ Legacy Swift
มาดูกันหน่อยว่า เรากำลังสร้างมันขึ้นมาใช่ไหม ?

Legacy Swift คืออะไร ?

คำว่า Legacy มันหมายถึง

  • อะไรที่เก่า ๆ มีอายุเยอะ ๆ
  • อะไรที่มันยากต่อการแก้ไข และ เปลี่ยนแปลง
  • อะไรที่มันล้าสมัย

จากหนังสือ Working Effectively With Legacy Code
อธิบายไว้ว่า

Legacy code คือ code ที่ไม่มี test นั่นเอง

ดังนั้น ลองย้อนกลับมาดู code และ ระบบที่พัฒนาภาษา Swift หน่อยสิว่า
มี test หรือ ชุดการทดสอบหรือไม่ ?
ถ้าไม่มี test แล้ว แสดงว่าคุณกำลังสร้าง Legacy Swift !!

โดย test นั้น ผมจะเริ่มจาก unit test
เพื่อทำให้เราเขียน code ได้อย่างมั่นใจ
สามารถเปลี่ยนแปลง code ได้ง่าย และ ปลอดภัย
สามารถ verify การทำงานของ code ได้ตลอดเวลา
สุดท้ายมันทำให้เกิดคำว่า คุณภาพ ขึ้นมาในทุก ๆ วัน

อีกข้อหนึ่ง คือ
Code ที่ไม่มี test คือ Bad code หรือ code ที่มันแย่ ๆ
ดังนั้น Legacy Swift มันก็คือ Bad Swift นะสิ !!

Legacy Swift == Bad Swift

คำถาม
ปัจจุบันเราทำการทดสอบ mobile app กันอย่างไร ?
คำตอบ
เราก็ทำการทดสอบผ่าน Emulator หรือ Device จริง ๆ นะสิ
ทำซ้ำแล้วซ้ำเล่า ซ้ำแล้วซ้ำอีก ไม่จบไม่สิ้น
ซึ่งมันใช้เวลามาก หรือ อาจจะมากกว่าการเขียน code อีกนะ
ยิ่งมี error เยอะ ๆ นะ ยิ่งใช้เวลาเยอะไปกันใหญ่ !!
แต่เราก็ยังทนทำกันอยู่อย่างนั้น
และคิดว่า ประสบการณ์มันจะช่วยเราให้ทำงานได้เร็ว และ ดีขึ้น !!

หรือว่าเราจะเขียน Automated test ขึ้นมา เช่น unit test
เพื่อให้มันทำการทดสอบได้บ่อยเท่าที่เราต้องการ
และจำนวนของ unit test มันจะเพิ่มขึ้นเรื่อย ๆ
ตามจำนวน feature ที่เยอะมากขึ้น

แต่ปัญหาก็คือ การเขียน test มันยากมากนะ !!

ตอบได้เลยว่า ยากต่อการเริ่มต้น
แต่ใช่ว่าจะทำไม่ได้นะ ถ้ามีความพยายาม !!

การเขียน test มันช่วยทำให้เรารู้ว่าสิ่งที่กำลังทำอยู่คืออะไร
และสิ่งที่จะทำต่อไปคืออะไร
ดังนั้น ลองฝึกคิด และ เขียน test ขึ้นมาก่อนจะลงมือทำสิ (TEST FIRST)
ค่อย ๆ ทำจากส่วนเล็ก ๆ และเพิ่มไปเรื่อย ๆ
แล้ว test เหล่านี้มันจะมีค่า และ กลับมาช่วยเหลือคุณในอนาคตอันใกล้อย่างแน่นอน
รวมทั้งยังช่วยลดเวลาในการทดสอบลงอีกด้วย

แต่ถ้ายังไม่เขียน test หรือ automated test กัน

คุณต้องมั่นใจว่า
เมื่อแก้ไข หรือ เพิ่ม feature เข้าไปแล้ว
คุณจะต้องทำการทดสอบทุก ๆ feature ด้วยนะ (Regression test)
ไม่เช่นนั้น คุณจะพูดออกมาได้อย่างไรว่า feature นั่น feature นี่ มันเสร็จแล้วนะ !!

Don’t write legacy Swift

เรามาเริ่มสร้าง Good code กันเถอะ
ลด ละ เลิก Legacy code กันนะ
อย่างแรกมาเริ่มเขียน Unit test ด้วยภาษา Swift กัน

Let’s GO !!!