มาทำ App ของคุณด้วย Modular Architecture กันน [Ep.2]

Sirichai Monhom
3 min readFeb 10, 2022

--

บทความก่อนหน้า พูดถึงการวางโครงสร้างของ Modular ของเรานะครับ ก็จะพอได้ไอเดียแล้วละว่าต้องสร้างอะไรบ้าง หากใครยังไม่ได้อ่าน ตามไปอ่านก่อนนะครับ สำคัญมากๆ Modular Architecture [Ep.1] ในบทความนี้ ผมจะทำในส่วนของ iOS นะครับ แต่เรื่องการ Design สามารถไปปรับใช้กับฝั่งของ Android ได้เช่นกันครับ

ก่อนอื่นเตรียม Project ที่เราจะทำ Modular นะครับ โดยใช้ Xcode ในตัวอย่างผมตั้งชื่อว่า “ Modular Example” และทำการ pod init, pod install ให้เรียบร้อยนะครับ

ยังจำภาพนี้กันได้ใช่ไหมครับ ภาพนี้คือส่วนของ Module ที่เราจะสร้าง นะครับ ในตัวอย่างนี้เราจะมาสร้าง Core Module กันน

  1. ขั้นตอนแรกคือการสร้าง Module ใหม่ขึ้นมาก่อนนะครับ File > New > Project ดังรูป

2. จะแสดงหน้าต่างให้เลือก Template ขึ้นมานะครับ ให้เราเลือก Framework แล้วกด Next ได้เลย

3. ก็ตั้งชื่อตาม Module ที่เราตั้งใจจะสร้างได้เลยครับ ของผมจะสร้างส่วนของ Core Module ครับ เสร็จแล้วกด Next โลดด

3. ส่วนนี้ก็เลือก Path ที่จะใส่ไว้นะครับ ให้ Create folder ดีๆ ให้ตรงกับที่เรา Defin กับทีมไว้ ส่วนตรงนี้ Add to: Don’t add to any project or workspace ให้เลือกข้อนี้ไว้นะครับ เพราะเราจะ Manual เอง

4. Step ถัดไปคือการ Add Core.xcodeproj เข้ามาครับ ตามรูปเลย

5. เราก็จะได้ Module Core มาแล้วนะครับ แต่ยังไม่เสร็จครับ เราต้อง Import Framwork ของ Module ที่เราสร้างขึ้นมาซะก่อน ตามภาพด้านล่างครับ

6. กดเครื่องหมาย (+) และ Add ModuleName.framework

7. เมื่อทำครบถึงขั้นตอนนี้เราก็จะได้ Module มาแล้วครับบ ต่อไปเราจะมาทดสอบกัน

8. ผมลองสร้าง Extension ขึ้นมา สำหรับ Validate Email จุดสำคัญคือ ตอนประกาศ Function จำเป็นต้อง public ด้วยนะครับ รวมถึง Variable ที่ต้องการให้ Module อื่นเรียกใช้ ต้องเป็น Public ทั้งหมด

9. ขั้นตอนการเรียกใช้ก็ง่ายๆเลยครับ แค่ Import Module ของเราในส่วนของ class ที่ต้องการเรียกใช้ ก็จะสามารถเข้าถึง Function หรือ Variable ที่อยู่ใน Module แล้วละครับ ไม่ยากเลย แต่ก็ต้องออกแบบดีๆนะครับ ว่าจะแบ่งส่วนการทำงานของโค้ดอย่างไร เพื่อให้ง่ายต่อการ maintenance และไม่เกิดปัญหา Code cycle dependency

Example การเรียกใช้ extension ผ่าน Core Module

สุดท้ายนี้แถมครับ สำหรับ Project ที่ใช้ Pod ในการทำงานเรา ถ้าเราทำการเพิ่ม Module แล้ว หาก Module ที่แยกออกมาของเราต้องการใช้ Libraly จาก Pod ละจะทำอย่างไร? คำตอบคือเพิ่ม Target สำหรับ Module นั้นๆ ใส่ path ของ Project และ workspace ให้ถูกต้อง -> Pod install เราจะสามารถใช้ Pod ใน Module ได้แล้วครับ ผมแนบรูปมาด้านล่างนี้ครับ

จบแล้วนะครับสำหรับบทความเกี่ยวกับ Modular หากท่านใดมีข้อเสนอเพิ่มเติม หรือมีไอเดียเจ๋งๆ มาแชร์ บอกกล่าวกันได้นะครับ ^^

--

--