นั่งดู VDO จาก session ต่าง ๆ ของงาน WWDC 2019 มันเยอะมาก
หนึ่งในนั้นมี session ที่ชอบมาก ๆ ซึ่งคิดว่ามันคือพื้นฐานของการพัฒนามาก ๆ 
นั่นก็คือ Great Developer Habits สำหรับการพัฒนาระบบงาน
โดยเฉพาะ iOS Developer นั่นเอง
มาดูกันว่ามีอะไรบ้าง

ใน session นี้แบ่งออกเป็น 8 เรื่อง

ประกอบไปด้วย

  1. Organize 
  2. Track
  3. Document
  4. Test
  5. Analyze
  6. Evaluate
  7. Decouple
  8. Manage

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

1. Organize

ว่าด้วยเรื่องการจัดการ project และ workspace ใน XCode ให้ดี
รวมถึงเรื่องโครงสร้าง project ใน XCode
ให้ใช้งาน group ใน XCode สำหรับจัดการ
ที่สำคัญโครงสร้างใน XCode ต้องเหมือนกับโครงสร้างใน file system ที่จัดเก็บด้วย
ไม่ใช่แค่การ reference ใน Xcode เท่านั้น

เรื่องของ warning ต่าง ๆ ที่เกิดใน XCode !!
แนะนำให้ทำการแก้ไขทันที
อย่าปล่อยให้มี warning จำนวนมาก
มิเช่นนั้นเราจะไม่แก้ไขแน่นอน
ซึ่งเป็นนิสัยที่ไม่ดีของ developer อย่างมาก

การใช้งาน storyboard ก็เช่นกัน
คงไม่มีใครนำ UI ทั้งหมดไว้ใน storyboard เพียงตัวเดียว
แนะนำให้ใช้งาน storyboard reference

รวมถึงให้ไปใช้งาน New Build System

2. Track

ระบบงานที่พัฒนาต้องใช้งาน version control แน่นอน
คงไม่มีใครที่ไม่ได้ใช้
ที่สำคัญ ตอนที่เราสร้าง project ใน XCode นั้น
จะมีให้เราเลือกด้วยว่า จะใช้งาน version control หรือไม่ ?

ในแต่ละ commit นั้น
ต้องมีขนาดเล็ก หรือ การเปลี่ยนแปลงไม่เยอะ
ต้องมีคำอธิบายชัดเจน
เนื่องจากตำอธิบายมันจะช่วยบอกเราว่ามีอะไรเกิดขึ้นมาบ้าง
คงไม่มีเพียงคำว่า Update, Create, Delete, Fixed เท่านั้น 
ซึ่งไม่ได้บอกสิ่งที่มีประโยชน์เลย

3. Document

สิ่งหนึ่งที่ใน session นี้พูดคือ
เพียงเขียน code ให้อธิบายตัวมันเองไม่น่าจะพอ
นักพัฒนาที่ดีควรเขียนเอกสารอธิบายด้วยว่า
Code เหล่านั้นทำงานอย่างไรบ้าง
ทำไม code ชุดนั้นจึงถูกเขียนหรือสร้างขึ้นมา
รวมไปจนถึง API Documentation

4. Test

เรื่องของการเขียน test ยิ่งมีความสำคัญ
เพื่อเป็นการบอกว่า code ที่เขียนขึ้นมาถูกใช้งาน
และยังคงทำงานได้ตามที่เราคาดหวัง
โดยใน session จะพูดถึง unit test เยอะ
ถ้ามีจำนวน test ที่มากพอ
จะมีประโยชน์มาก ๆ สำหรับการทำ regression test
มันช่วยทำให้นักพัฒนาเดินไปข้างหน้าได้อย่างมั่นคง

ที่สำคัญใน XCode ก็สนับสนุนเรื่องนี้อยู่แล้ว ตั้งแต่การสร้าง project เลย
และใน XCode 11 มี feature ช่วยให้การเขียนและจัดการ test ได้ดีขึ้นอีกด้วย

5. Analyze

ใน Xcode นั้นมีเครื่องมือมากมายสำหรับการวิเคราะห์เรื่องต่าง ๆ เช่น

  • Network Link Conditioner
  • Debug
  • Instrument
  • Sanitizer
  • Checker

6. Evaluate

ในการพัฒนาระบบงานนั้น เรื่องการ evaluate สิ่งที่ทำขึ้นมานั้นสำคัญมาก ๆ
ยิ่งถ้าเราทำการ evaluate ได้เร็วเท่าไร
เราจะสามารถแก้ไขได้เร็วมากเท่านั้น

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

7. Decouple

ในระบบงานหนึ่ง ๆ มักจะมีขนาดใหญ่ขึ้นเรื่อย ๆ
ส่งผลให้การจัดการยากขึ้น
ส่งผลให้การ build ยากและนานขึ้น
ดังนั้นเราควรต้องทำการแยก code ต่าง ๆ ออกจากกัน
ทั้งการใช้งาน package และ framework ทำให้ง่าย
ต่อการ reuse และ shared code กัน

แต่สิ่งที่จำเป็นมาก ๆ 
ถ้าเราแยก code ออกจากกันนั่นก็คือ เอกสารหรือ document ตามข้อ 3 นั่นเอง

8. Manage

การใช้งาน dependency ต่าง ๆ เป็นสิ่งที่มีประโยชน์และขาดไม่ได้เลย
แต่ก่อนจะใช้งานแต่ละ dependency นั้น
คุณควรต้องเข้าใจก่อนว่า ข้างในมันทำงานอย่างไร
ทำงานอย่างไรต่อข้อมูลใน app หรือ device
มันคือเรื่องความปลอดภัยของ app เรามาก ๆ
ยิ่งถ้า dependency นั้น ๆ ไม่ถูก maintain แล้ว จะทำอย่างไร ?
ต้องวางแผนให้ดีอีกด้วย

ลองนำแนวทางเหล่านี้ไปใช้งานกันดูครับ

ขอให้สนุกกับการ coding