Design Pattern thường được hiểu như là một mẫu, hay một khuôn mẫu được tạo ra để áp dụng chung cho một tình huống cụ thể nào đó. Như vậy khi gặp một vấn đề cần xử lý, thông thường ta sẽ có một Pattern cụ thể được cộng đồng định nghĩa ra nhằm giúp cho chúng ta, những người rơi vào các tình huống đó, có một kiến thức chung, các cách thức giải quyết chung theo khuôn mẫu (Pattern) đã được định ra (Design).
Một khi chúng ta đã áp dụng việc giải quyết vấn đề theo một mẫu chung, được cộng đồng chấp nhận, khi đó ứng dụng của chúng ta trông chuyên nghiệp hơn, dễ quản lý và vận hành, đồng thời giúp cộng đồng dễ tiếp cận hơn đến vấn đề mà chúng ta đang giải quyết đó.
Ở bài viết ngắn này tôi chưa tập trung vào khái niệm Design Pattern dành cho việc viết code trong Android, mà chỉ lượm lặt các kiến thức trên mạng để đưa ra một Design Pattern dành cho việc xây dựng kiến trúc của một ứng dụng Android, đó là việc đặt tên các package, đặt tên các file và các tên biến theo mẫu như thế nào mà thôi.
Xem khái niệm Design Patterns là gì?
Nhóm Java class theo Package
Thông thường ta hay gom nhóm các Java class trong Android theo các package. Nhưng nhóm theo quy tắc như thế nào là tốt, để không phải tạo quá nhiều package hay quá ít package, hay có bất kỳ class nào khác mà ta không biết phải gom nhóm vào package nào.
Các gợi ý sau có thể giúp ta giải quyết tốt vấn đề này.
- <package_gốc> —> Chứa lớp Application (là lớp extends Application).
- <package_gốc>.views —-> Chứa tất cả các Activity của ứng dụng (cũng có thể đặt tên package này là <package_gốc>.activities vì với cách đặt tên này thì package sẽ được để ở các vị trí đầu tiên của project theo thứ tự alphabet, giúp dể truy xuất đến các file Activity rất quan trọng trong mỗi chương trình).
- <package_gốc>.fragments —-> Chứa tất cả các Fragment.
- <package_gốc>.webservice —-> Chứa tất cả các lớp liên quan đến việc gọi kết nối đến Web Service.
- <package_gốc>.adapters —> Chứa tất cả các adapter.
- <package_gốc>.db —> Chứa tất cả các class liên quan đến database, như SQLite database.
- <package_gốc>.models —> Chứa các class dùng để giữ thông tin cho các control hay component khác, chẳng hạn như các DTO chứa dữ liệu sau khi gọi kết nối đến Web Service, hay các class Item dùng cho ListView,…
- <package_gốc>.utils —> Chứa các class “công cụ” của ứng dụng, các class này chứa các function hửu ích hoặc các function dùng chung cho các class khác. Chẳng hạn như các function giúp chuyển đổi ngày tháng năm, các function load custom font từ thư mục assets,…
- <package_gốc>.widgets —> Chứa tất cả các custom View, các View này là các View do chính ta xây dựng lại dựa trên View gốc.
- <package_gốc>.services —-> Chứa tất cả các service.
- <package_gốc>.animation —> Chứa tất cả các class liên quan đến animation.
Quy ước đặt tên cho các file Java code
Là một số file nằm trong thư mục src của ứng dụng.
- <Tên_Activity>Activity.java —> Là tên đặt cho các Activity (Ví dụ: MainActivity.java, StockChartActivity.java).
- <Tên_Fragment>Fragment.java —> Là tên đặt cho các Fragment (Ví dụ: NewsFragment.java).
- <Tên_Adapter><Tên_Component>Adapter.java —> Là tên đặt cho các Adapter (Ví dụ: NewsListviewAdapter.java, FoodsGridviewAdapter.java, TutorialViewPagerAdapter.java).
Quy ước đặt tên cho các file XML
Đây là các file XML nằm trong thư mục res/layout của ứng dụng.
- activity_<tên_activity>.xml —> Là tên các file XML dùng làm giao diện cho một Activity (Ví dụ: activity_main.xml, activity_stock_chart.xml).
- dialog_<tên_dialog>.xml —> Là tên các file XML dùng cho giao diện dialog được custom (Ví dụ: dialog_login.xml).
- row_<tên_list>.xml —-> Là tên các file XML cho một row của ListView (Ví dụ: row_task_list.xml).
- fragment_<tên_fragment>.xml —> Là tên các file XML dùng làm giao diện cho một fragment (Ví dụ: fragment_news.xml).
Quy ước đặt tên id cho các component hay widget
Các component hay widget chính là các View hay ViewGroup trong một file XML Layout, chẳng hạn như các TextView, Button, EditText, LinearLayout, RelaytiveLayout,… Việc đặt tên id cho chúng như sau.
- Tên của chúng phải bắt đầu bằng tên file XML chứa chúng, sau đó đến từ viết tắt cho loại component/widget đó, rồi đến tên định nghĩa nên component/widget đó (điều này giúp bạn có những id không bị trùng lắp trong một ứng dụng).
- Ví dụ:
- activity_login_btn_login
- dialog_send_message_tv_content
- fragment_news_et_search
- Các từ viết tắt cho từng loại component/widget như sau.
- Button – btn
- EditText – et
- TextView – tv
- CheckBox – chk
- RadioButton – rb
- ToggleButton – tb
- Spinner – spn
- Menu – mnu
- ListView – lv
- GalleryView – gv
- LinearLayout – ll
- GridView – grv
- ViewPager – vp
- RelayriveLayout – rl
- FrameLayout – fl
Tham khảo: Bạn có thể tham khảo thêm tài liệu quy ước chung cho việc đặt tên file, biến tại đây
- https://gioilaptrinh.wordpress.com/2014/10/21/tao-ung-dung-android-theo-design-pattern