Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สรุปจากบทความเรื่อง 14 must knows for an iOS developer

$
0
0

จากบทความเรื่อง 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
ขอให้สนุกกับการเขียนพัฒนาครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles