pop-swift
ในภาษา Swift นั้นพยายามแก้ไขปัญหาต่าง ๆ ที่มากับ Object Oriented Programming (OOP)
โดยการนำแนวคิด Protocol Oriented Programming (POP) มาใช้งาน
ซึ่งถูกแนะนำครั้งแรกในงาน WWDC 2015
แน่นอนว่ามันทำให้การเขียนโปรแกรมด้วยภาษา Swift เปลี่ยนไป
แถมยังง่ายและสนุกขึ้นอีกด้วย
มาดูกันนิดหน่อยว่า นำไปใช้ในการพัฒนาระบบอย่างไรบ้าง ?

สำหรับผู้เริ่มต้นแนะนำให้ศึกษาจาก

มาดูการใช้งานบ้างดีกว่า

ปกติเรามักจะมี feature พื้นฐานทั่วไป
ที่ทุก ๆ หน้า หรือหน้าส่วนใหญ่จะต้องมี
ตัวอย่างเช่นใน iOS app เกือบทุก ๆ หน้าจะต้องมีการ logout ออกจากระบบ
ดังนั้นใน ViewController จำเป็นต้องมี function logout()
ซึ่งแน่นอนว่าเราจะสร้าง BaseViewController ขึ้นมาดังนี้

แต่ปัญหาที่เกิดขึ้นคือ
ในทุก ๆ ViewController ต้องทำการ extend มาจาก class BaseController
ทั้ง ๆ ที่ในบางหน้าหรือ ViewController ไม่จำเป็นต้องใช้ function logout() !!
แต่ก็ต้องทำเพราะว่า มันคือ standard หรือ pattern ที่ตกลงร่วมกัน !!
ดังนั้นแนวคิดนี้ ไม่น่าจะดีนะ ?

มาดูแนวคิดของ Protocol Oriented Programming (POP) กันหน่อยสิ

มันก็คือการนำ Protocol ซึ่งเป็นหนึ่งใน feature ของภาษา Swift
ถ้าผมทำการสร้าง protocol ชื่อว่า Logoutable ขึ้นมาล่ะ
จากนั้น ViewController ไหนที่ต้องการความสามารถการ logout
ก็ทำการ conform ไปได้

ปล.
แนวคิดมันเหมือนกับ interface เลยนะเออ

มาดูตัวอย่าง code กัน

ดูเหมือนว่าจะดีนะ !!
แต่ว่าทุก ๆ ViewController ที่ทำการ conform protocol Logoutable นั้น
ต้องทำการ implement function logout() เองทั้งหมด
ซึ่งไม่น่าจะดีแน่นอน !!
ลองคิดดูสิว่า ถ้าเรามี ViewController เป็นสิบ ๆ
ชีวิตน่าจะยากขึ้นนะ !!

โชคดีที่ในภาษา Swift มี Protocol Extension มาให้

ดังนั้นเราจึงสามารถเขียน extension เพิ่มเติมให้กับ Protocol ได้เลย
โดยจะทำการเพิ่ม function logout() ให้กับ
ทุก ๆ ViewController ที่ทำการ conform กับ protocol Logoutable เลย
เมื่อนำทุกอย่างมารวมกัน สามารถเขียน code ได้ดังนี้

ซึ่งน่าจะทำให้การเขียน code ด้วยภาษา Swift สนุกขึ้น
ด้วยแนวคิดของ POP + Extension นะครับ