วันนี้เจอ code ที่เขียนด้วยภาษา Swift ที่น่าสนใจ
เกี่ยวกับการใช้งาน protocol
แถมเจอบทความอธิบายเรื่องนี้ด้วย Protocol Composition
เลยนำมาสรุปกับ code ที่พบเจอด้วยเลย
โดย code เหมือนจะดูดีนะ แต่มีหลายเรื่องที่สามารถปรับปรุงให้ดีขึ้นได้
มาเริ่มกันเลย
คำอธิบาย
ใน protocol สำหรับการจัดการข้อมูล
ซึ่งมีความสามารถในการอ่านและเขียนข้อมูล
ดังนั้นถ้า struct/class ทำการ implement protocol นี้
ต้องทำการ implement ทั้งการอ่านและการเขียนเสมอ
เหมือนจะดูดี
แต่ไป ๆ มา ๆ เจอ code แนวนี้ใน project อีก
คำอธิบาย
คำถามที่เกิดขึ้นมาทันทีคือ มันคือ read only
แล้วทำไมต้องมีการเขียน หรือ method write() ด้วย ?
ไม่แน่ใจนักพัฒนาหลาย ๆ คนเคยเจอ code แนวนี้หรือไม่ ?
ถ้าเจอแล้ว สิ่งที่ทำคืออะไร ?
- ปล่อยมันไป อย่าไปยุ่งกับมัน
- ถ้าต้องใช้ protocol นี้อีกก็ทำเหมือน ๆ กัน
- ต้องแก้ไข
- แก้อะไร มันมีอะไรผิดหรอ
ในบทความนี้จะทำการแก้ไขและปรับปรุงนิดหน่อย
สิ่งแรกที่ต้องเข้าใจก่อนคือ code ชุดนี้มันมีอะไรที่ต้องปรับปรุง
ถ้าไม่รู้จะทำอะไรกัน !!
จาก code ต้องการเพียงการอ่านข้อมูลเท่านั้น
ดังนั้นปัญหาที่เจอคือ เรื่องของ ISP (Interface Segregation Principle)
นั่นหมายความว่า ผู้ใช้งานควรใช้ interface ที่แตกต่างกันไปตามความต้องการ
ในที่นี้ interface ของเราคือ protocol นั่นเอง
โดยจะสร้าง protocol ขึ้นมา 2 ตัวคือ DataReader และ DataWriter
จากนั้นทำการแก้ไข struct/class ที่ทำการ implement protocol เดิมดังนี้
ดูเหมือนจะดีขึ้นแล้วนะ
แต่สิ่งที่น่าสนใจคือ ถ้ามี protocol จำนวนเยอะ ๆ ละ
ชีวิตไม่น่าจะดีเท่าไร
ดังนั้นใน swift นั้นมี typealias ให้ใช้
ทำให้ code อ่านง่ายขึ้นดังนี้
มาถึงตรงนี้น่าจะทำให้ code ดูดีขึ้นกว่าเดิมมาบ้างนะ
สิ่งที่นักพัฒนาควรต้องทำคือ
การปรับปรุง code ต่าง ๆ ให้ดีขึ้นอยู่อย่างเสมอ
แล้วชีวิตจะดีขึ้นครับ
ขอให้สนุกกับการ coding ครับ
Reference Websites
https://dzone.com/articles/protocol-composition-in-swift?edition=334920