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

[Android] สิ่งที่ได้เรียนรู้จาก Source code ของ SimpleNote app

$
0
0

simplenote

simplenote ทีมพัฒนา SimpleNote ได้ประกาศเปิด opensource ของ app ทุก platform ออกมาทั้ง
  • iOS พัฒนาด้วย Objective-C เป็นหลักและมี Swift นิดหน่อย
  • Android
  • macOS พัฒนาด้วย Objective-C เป็นหลัก
  • Window/Linux ซึ่งพัฒนาด้วย Electron
ดังนั้นมาลองดู code ของ Android app กันหน่อย ว่ามีอะไรที่น่าสนใจกันบ้าง ? เริ่มต้นด้วยคำพูดที่ชอบมาก ๆ คือ
We don’t make software for free, we make it for freedom

มาดู Library ที่ใช้พัฒนา App กันบ้าง

ภายใน build.gradle ของ App ไม่มีอะไรมาก

ส่วนใหญ่เป็นสิ่งที่ต้องมีอยู่แล้ว เช่น
  • การ sign APK แบบอัตโนมัติ คงไม่มีใครมานั่งทำแบบ manual หรอกนะ !!
  • การกำหนด configuration ต่าง ๆ ซึ่งไม่มีน่าจะมีใครไป hard code หรอกนะ !!

โครงสร้างของ code ไม่ได้ซับซ้อนอะไรมากนัก

ไม่มีการใช้ View Data Binding ไม่มีการใช้ Dagger ไม่มีการใช้ Reactive ไม่มีการนำแนวคิด MVP, MVVM, VIPER มาใช้ ไม่มีวิธีการที่หวือหวาอะไร โดยแบ่งส่วนการทำงานตาม package ดังนี้
  • Analytics ทำหน้าที่จัดการพวก analytic ต่าง ๆ ของ app
  • Model ทำหน้าที่จัดการข้อมูลบน Simperium
  • Utils เป็นส่วน utilities ต่าง ๆ ของระบบ ซึ่งเยอะมาก ๆ
  • Widgets
  • ส่วนหลักจะเห็น Activity และ Fragment ของแต่ละหน้า ซึ่งจำนวน code ในแต่ละ Activity เยอะใช้ได้เลย

สิ่งที่ชอบมาก ๆ ของ App นี้คือ

มีชุดการทดสอบที่เยอะใช้ได้เลย ซึ่งอยู่ใน AndroidTest ทั้งหมด ประกอบไปด้วย
  • Unit test
  • Integration test ผ่านการ Mock หรือ Test double เช่น Database และ HTTP connection
  • Activity test ผ่าน Instrument testing ของ Android ซึ่งมีอยู่เพียง 2 test case

โดยเราสามารถนำมาศึกษาวิธีการเขียนได้

และเมื่อนำ source code มาวิเคราะห์ด้วย SonarQube ได้ผลดังนี้ ซึ่งเราสามารถเข้าไป contribute ได้อีกเยอะครับ simplenote-sonar Reference Websites https://simplenote.com/2016/08/11/ios-android-and-macos-apps-now-open-source/ https://github.com/Simperium/simperium-android

Viewing all articles
Browse latest Browse all 1997

Trending Articles