จากบทความเรื่อง
14 must knows for an iOS developer
หรือ 14 เรื่องที่ iOS ควรจะต้องรู้และเข้าใจ
คิดว่าน่าจะพอมีประโยชน์กับมือใหม่มาก ๆ หรือแม้กระทั่งมือเก๋า
ซึ่งผมคิดว่าส่วนใหญ่มันคือเรื่องพื้นฐานเลยนะ
แต่บางเรื่องก็ยากพอควร
ดังนั้นจึงสรุปข้อที่เป็นพื้นฐานจริง ๆ ไว้นิดหน่อย
มาเริ่มกันเลย
ต้องใช้งาน Version Control นะ
ไม่มีข้อยกเว้นใด ๆ ทั้งสิ้น
ต้องทำการจัดการ source code และเอกสารต่าง ๆ
ด้วย Version Control เสมอ
ไม่ว่าจะพัฒนาคนเดียว
ไม่ว่าจะพัฒนาเป็นทีม
ซึ่งในปัจจุบันน่าจะใช้กันอยู่ 2 ตัวหลัก ๆ คือ Git และ SVN
ต้องรู้และเข้าใจเรื่อง Architecture Pattern
ก่อนจะเริ่มพัฒนา app ใด ๆ ก็ตาม
สิ่งที่ต้องพูดคุย วางแผน และ ออกแบบก่อนคือ
สถาปัตยกรรมของ app ว่าจะเป็นอย่างไร
ซึ่งมันจะช่วยทำให้การพัฒนา app ง่ายขึ้น
โครงสร้างดีก็ง่ายต่อการทำความเข้าใจ
โครงสร้างดีก็ง่ายต่อการพัฒนา
โครงสร้างดีก็ง่ายต่อการอ่าน
โครงสร้างดีก็ง่ายต่อการดูแลรักษา
ตัวอย่างเช่น MVC, MVP, MVVM, VIPER เป็นต้น
เสียเวลาออกแบบและคิดก่อนลงมือทำ
จะช่วยทำให้คุณได้รับเวลากลับมามหาศาลนะครับ
เข้าใจทั้ง Objectiv-C และ Swift ก่อนตัดสินใจ
ก่อนที่จะตัดสินใจว่าจะพัฒนา app ด้วยภาษาใดนั้น
ควรต้องเข้าใจก่อนว่า
ในแต่ละภาษามีข้อดีและเสียอย่างไรบ้าง
แต่ผมแนะนำให้เขียนด้วยภาษา Swift นะ
เนื่องจาก syntax ของภาษาล้วน ๆ
รู้จักและใช้งาน Dependency Manager
ตัวที่ต้องรู้จักคือ
Cocoapod
อีกตัวก็น่าจะรู้ด้วยคือ
Carthage
ถ้าไม่รู้จักสักตัว น่าจะถึงเวลาทำความรู้จักซะ
รู้จักวิธีการจัดเก็บข้อมูลของ app
ซึ่งสามารถจัดเก็บได้หลายวิธีทั้ง
NSUserDefault, Keychain, CoreData
หรือหลัง ๆ มาผมจะใช้
Realm
โดยแต่ละวิธีก็มีทั้งข้อดีและข้อเสีย
รวมทั้งความเหมาะสมที่แตกต่างกันไป
ตัวอย่างเช่น Keychain จะเก็บข้อมูลที่มี privacy สูง ๆ
รู้และเข้าใจการใช้ Storyboard, Xibs และ Programmatic UI (เขียน code เอง)
โดยแต่ละวิธีก็มีข้อดีข้อเสียต่างกันไป
อีกทั้งยังขึ้นอยู่กับการตัดสินใจของแต่ละทีมและ app
เริ่มต้นที่ Storyboard ทำให้ทั้งทีมพัฒนา ทีม design
เห็น flow การทำงานของ app ได้อย่างชัดเจน
แต่เมื่อ flow การทำงานเยอะ
แต่เมื่อหน้าจอการทำงานเยอะ
ก็ทำให้ storyboard มีความยุ่งเหยิงและวุ่นวายได้
รวมทั้งอาจจะเกิดปัญหาเรื่อง merge conflict อีกด้วย
แต่ก็แก้ไขได้ด้วยการแยก storyboard
และแยกการทำงานเป็นส่วน ๆ ที่ชัดเจน
หรือมีการวางแผนที่ดี
Xibs เป็นการเตรียมแต่ละหน้าจอออกมาหรือส่วนเล็ก ๆ เป็นไฟล์ย่อย ๆ
ทำให้สามารถ reuse ได้ง่าย
เรื่อง merge conflict ก็น้อยลงไป
ส่วนเรื่องของ flow ก็ยากหน่อย
ต้องทำเอกสารเองนะ
หรือไปดูเอกสารจากการออกแบบนั่นเอง
Programmatic UI ประมาณว่าเขียน code เพื่อสร้าง UI เอง
แน่นอนว่า สามารถควบคุมได้ง่าย
ปัญหา merge conflict นี่หายไปเลย
แต่ไม่สามารถดูหน้าจอได้ถ้าไม่ run app
ชีวิตการพัฒนาจะอยู่ในโลกมึดมาก ๆ
รวมทั้งทำให้ใช้เวลาในการพัฒนาพอสมควร
แต่ก็มี framework ต่าง ๆ ออกมาช่วยให้งานง่ายขึ้น เช่น
SnapKit
แต่แนะนำให้ใช้ทั้ง 3 วิธีร่วมกันนะครับ
ปิดท้ายด้วยเรื่องของการทดสอบ (Test)
แน่นอนว่านักพัฒนาทุกคนต้องทำการทดสอบ app
แต่สิ่งที่ควรทำเพิ่มคือ
Automated testing
ทั้ง Unit test และ Instrument test หรือ UI test
โดยนักพัฒนาหลายคนอาจจะมองว่า
มันต้องเพิ่มเวลาในการพัฒนา
มันต้องเขียน code มากขึ้น
ซึ่งตอบได้เลยว่าใช่แล้ว ถูกต้องแล้ว
แต่มันก็มีข้อดีคือ
ช่วยทำให้เรามั่นใจใน code มากขึ้น
ช่วยทำให้โครงสร้างของ code ทดสอบได้ง่ายขึ้น
ช่วยทำให้ง่ายต่อการดูแลรักษามากขึ้น
การทดสอบอย่างเดียวคงยังไม่พอ
ต้องมีการทำ profiling เรื่องการใช้งาน CPU และ Memory
ต้องมีการตรวจสอบ memory leak อีกเยอะเลย !!
ยังมีเรื่องอื่น ๆ อีกนะครับ เช่น
- Localization string
- Location
- Protocol
- Functional programming
- Closure
- CollectionView และ TableView
- Scheme
ขอให้สนุกกับการเขียนพัฒนาครับ