เพื่อความสนุกในการศึกษา Android app ของชาวบ้าน
เลยนำ app ที่ได้รับความนิยมในด้านดีมาดูกันหน่อย
ซึ่งนำไฟล์ APK มา decompile
เพื่อเรียนรู้ว่า app เหล่านั้นมีอะไรที่น่าสนใจบ้าง
ทั้ง Library ที่ใช้งาน
ทั้งแนวทางในการเขียน code
ทั้งโครงสร้างของ code
โดยมาเริ่มที่ Medium app กันเลย
เริ่มต้นด้วย Library หรือ Dependency ที่ใช้งาน
บอกได้เลยว่ามันเยอะมาก ๆ จะเยอะไปไหน ?- Google GSON
- Google Guava
- Square Dagger เป็น Dependency Injector ลงไปในส่วนต่าง ๆ ของระบบ ทำให้ส่วนการทำงานแยกเป็นส่วน ๆ ชัดเจนมากขึ้น
- Square Phrase สำหรับจัดการรูปแบบของข้อมูล ซึ่งสะดวกมาก ๆ
- Square Picasso
- Square Retrofit
- RxJava with RxAndroid
- Chrisjenx Calligraphy สำหรับการ custom font ใน app
- Bumptech Glide
- JakeWharton Timber สำหรับจัดการ Log
- JakeWharton ButterKnife
- JakeWharton DiskLRUCache
- Flipboard BottomSheet
มาดูโครงสร้างของ App กันหน่อย
ประกอบไปด้วยส่วนการทำงานดังนี้- Activity สำหรับแสดงผล และ ดักจับการใช้งานจากผู้ใช้
- View Presenter สำหรับกำหนดการทำงานในแต่ละหน้า
- Controller เป็นส่วนควบคุมการทำงานหลัก
- Data store สำหรับจัดเก็บข้อมูล
- API สำหรับดึงข้อมูลจาก API ต่าง ๆ
ส่วนที่ชอบมาก ๆ ใน App นี้ก็คือ การใช้งาน Optional จาก Google Guava
ทำให้ข้อมูลในตัวแปร และ ข้อมูลจาก method ต่าง ๆ ไม่เป็น Null แน่นอนว่า ไม่ต้องมาตรวจสอบค่า Null หรือเจอกับปัญหา NullPointerException อีกต่อไป รวมทั้งลด ละ เลิกการใช้งาน Android Annotation ต่าง ๆ ซึ่งรกตาอย่างมาก เช่น- @Nullable
- @NotNull
เมื่อไปดูใน res/drawable พบว่ามีแต่ไฟล์ xml เท่านั้น
ไม่มีไฟล์รูปภาพใด ๆ เลย เพราะว่าไฟล์รูปภาพแยกออกไปยัง folder ตามขนาดหน้าจอไปเลย เป็นแนวปฏิบัติในการพัฒนาที่ดีเลยวันนี้ได้เรียนรู้สิ่งต่าง ๆ เยอะมากจาก Medium app เพื่อนำไปประยุกต์ใช้ในการพัฒนาต่อไป มันสนุกดีนะ