swift Archive

[Swift] แก้ไขปัญหาการทำ UI Testing สำหรับ UISlider

ปัญหามีอยู่ว่า ไม่สามารถทำการเขียน code เพื่อทำ UI Testing สำหรับ UISlider ที่มีการแก้ไขรูปแบบการแสดงผลได้ สิ่งที่เจอคือ ทำการหมุน UISlider จากแนวนอนไปเป็นแนวตั้ง ทำให้รูปแบบของการหา element และการจัดการที่ต่างออกไป !!

Read More…

[iOS] เราจะทำการจำลอง API server สำหรับ UI testing อย่างไร

คำถามที่น่าสนใจจากทีมเกี่ยวกับจำลอง API server เพื่อทดสอบ UI test สำหรับ iOS app จะทำอย่างไรดี ? คำตอบง่าย ๆ คือ ง่าย ๆ ให้ทำการส่ง url ของ API server ผ่าน environment variable สิเออ !!! พูดแบบนี้อาจจะไม่เห็นภาพ ดังนั้นมาดู code กันหน่อย

Read More…

[Swift] มาทำการ refactor code พวก Singleton กันหน่อย

ใน code สำหรับ iOS ที่พัฒนาด้วยภาษา Swift นั้น พบว่ามีการเขียน code ในรูปแบบ Singleton เยอะมาก ๆ แน่นอนว่า วิธีการนี้มันมีทั้งข้อดีและข้อเสีย เช่น พัฒนาได้ง่าย ใช้งานง่าย ยากต่อการทดสอบ ยากต่อการ reuse state เปลี่ยนได้ตลอด ขอบเขตการทำงานเป็น global ไป ๆ มา ๆ ข้อเสียเยอะนะเนี่ย !! ดังนั้นจึงเป็นเหตุผลว่า ทำไมควร ลด ละ เลิก หรือถ้าต้องการใช้งานจริง ๆ ก็ควรระมัดระวังให้มากเข้าไว้ แต่ถ้าเป็น code ที่มีอยู่แล้วละ ? การจะทำการลบ code เหล่านี้ทิ้ง น่าจะเป็นงานช้างแน่ ๆ ดังนั้นเรามาหาวิธีการอยู่กับ Singleton กันเถอะ นั่นคือการ refactor code นั่นเอง [&hellip

Read More…

[Swift] ลดการเขียน code ซ้ำ ๆ ด้วย Sourcery กันหน่อย

ในการ coding นั้นเรื่องของ copy-and-paste รวมทั้ง code ที่ต้องเขียนซ้ำไปซ้ำมา บางครั้งเป็น code ที่ไม่ควรจะต้องมี แต่ด้วยโครงสร้างของภาษาก็จำเป็นต้องเขียน ทำให้เสียเวลาในการพัฒนาระบบไปอย่างมาก นั่นแสดงว่าเราได้ปฏิบัติตัวขัดแย้งกับ DRY principle อย่างมาก DRY ย่อมาจาก Don’t Repeat Yourself ดังนั้นเรามา ลด ละ เลิก กันบ้างแถอะ หนึ่งในนั้นคือ การ generate code จาก template ซึ่งในบทความนี้ขอแนะนำ Sourcery

Read More…

ทำการสร้าง Document ของ Swift project ด้วย Jazzy

เห็นในกลุ่ม iOS Developer Thailand มีการสอบถามเรื่อง การสร้าง document แบบอัตโนมัติจาก comment ใน code หรือไม่ ? ซึ่งเป็นสิ่งที่ทาง Apple ลืมมั้ง !! ว่าต้องทำอย่างไร แต่มีคนทำเครื่องมือมาช่วยหลายตัว ยกตัวอย่างเช่น Jazzy สร้างโดยทีมพัฒนาของ Realm ซึ่งใช้งานมาก ๆ ดังนี้

Read More…

Swift :: สิ่งที่ iOS developer ควรรู้และเข้าใจไว้บ้าง

จากบทความเรื่อง Top 10 Ground Rules for iOS Developers ทำการอธิบายพื้นฐานที่ iOS developer ควรจะต้องรู้ เข้าใจและปฏิบัติตาม ซึ่งมีหลาย ๆ เรื่องที่น่าสนใจ จึงทำการแปลและสรุปบางเรื่องไว้นิดหน่อย

Read More…

[Swift] ทำการ validate ข้อมูลด้วยแนวคิดของ Composite pattern

วันนี้ทำการ review code ของ iOS app ที่พัฒนาด้วยภาษา Swift พบว่ามีส่วนการ validate หรือตรวจสอบข้อมูลจำนวนมาก และรูปแบบ code ที่เขียนบ่อย ๆ เป็นดังนี้ ค่าต้องไม่ว่าง ข้อมูลต้องมีรูปแบบที่ถูกต้องเช่น email , ความยาวของข้อมูล, เป็นตัวเลข เป็นต้น ข้อมูลของ password ซึ่งต้องมีทั้งตัวเลข ตัวพิมพ์เล็กและพิมพ์ใหญ่ และอื่น ๆ อีกมากมาย คำถามก็คือ code ที่เขียนเป็นอย่างไร ? คำตอบก็คือ if-else-if-else ไปเรื่อย ๆ ไงล่ะ !!

Read More…

ว่าด้วยเรื่อง Protocol Oriented Programming (POP) ของภาษา Swift

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

Read More…

แก้ไขปัญหาเรื่อง Callback hell ใน Swift กันนิดหน่อย

วันนี้ทำการ review code ทั้งฝั่ง Android และ iOS(Swift) พบว่า code มีสิ่งที่คล้ายกันมาก ๆ คือ มีการเรียกใช้ REST API ผ่าน network library ซึ่งทำงานแบบ Asynchronous สิ่งที่เกิดขึ้นคือ มี feature ที่ต้องเรียกใช้งาน REST API หลาย ๆ ตัวต่อเนื่องกัน ทำให้เกิด code ในรูปแบบของ Callback ซ้อน Callback หรือ Callback hell นั่นเอง หรือดีขึ้นมาหน่อยคือ flow การทำงานของ code กระโดดไปยัง method อื่น ๆ ต่อไปเป็นทอด ๆ หรือ Chain

Read More…

วิเคราะห์ code ภาษา Swift ด้วย SonarQube

ว่าง ๆ ช่วงฝนตกมานั่งวิเคราะห์ code ของภาษา Swift ด้วย SonarQube กันหน่อย ถ้าไปดูใน SonarQube จะพบว่ามี plugin ให้ใช้แล้ว แต่ว่ามันเป็น commercial หรือเสียเงินนั่นเอง ดังนั้นจึงไปลองหาของฟรีและไปพบกับ Sonar Swift จึงนำมาทดลองใช้กันหน่อย

Read More…