Những sai lầm nghiêm trọng cần tránh trong phát triển Android

0
129

Critical mistakes to avoid in Android development

Rất nhiều chuyên gia ở các lĩnh vực khác nhau đều cho rằng:

Khi nỗ lực làm điều gì đó, quan trọng nhất là chúng ta phải hiểu thứ chúng ta đang làm là gì. Nhưng quan trọng không kém là việc chúng ta cần biết những điều cấm kị cần phải tránh – bằng mọi giá.

Những bài đăng của mình từ trước tới nay thường nói về cách phát triển một ứng dụng, một task vụ củ thể nào đó trên Android. Tuy nhiên, mình vẫn cảm thấy có gì đó thiếu sót khi không nhắc đến những sai lầm mà rất nhiều các bạn developer mắc phải.

Bài viết này mình sẽ liệt kê 5 sai lầm phổ biến nhất mà mình nghĩ các bạn Android developer nên tránh

1. Quên để String hiển thị ngoài màn hình vào trong strings.xml

Điều này sẽ làm trải nghiệm quốc tế hóa kém đi, vì bạn sẽ phải tự thiết kế phiên bản hiển thị chính xác của message dựa trên ngôn ngữ của người dùng.

Nếu như các String được đặt trong file strings.xml, chúng có thể dễ dàng được dịch và tích hợp vào ứng dụng. Điều tuyệt vời là Android sẽ căn cứ vào ngôn ngữ mà người dùng đang sử dụng để tự động chuyển sang file string.xml đúng với ngôn ngữ đó.

Dưới đây là một số lý do mà các bạn Android Developer đưa ra để “viện cớ” không dùng string-resources:

  • “Tôi chỉ dùng nó mỗi ở đây thôi”: Nhưng sau này bạn cần phải sử dụng lại String đó ở một nơi khác thì sao? Bạn có có chắc chắn là chỉ sử dụng ở mỗi đó thôi không? Vì vậy, bạn nên đầu tư thêm một phút để sau này có thể dễ dàng tái sử dụng.
  • String phức tạp và cần cập nhật liên tục: Đừng lo! Android đã hỗ trợ sẵn cho bạn có thể làm được điều đó trong String.xml file. Bạn hoàn toàn có thể cập nhật String thông qua các tham số truyền vào String. Bạn có thể tham khảo bài viết này trên StackOverFlow : Sử dụng tham số trong String.xml. Hoặc tài liệu official của chính chủ Google tại đây.
  • “Ứng dụng của tôi chỉ hỗ trợ một ngôn ngữ”: Thông thường, với các nhà phát triển độc lập(nhà phát triển phần mềm không phải là công ty) thì thường chỉ có kế hoạch cho một thị trường nào đó hoặc một ngôn ngữ nào đó, để giảm chi phí. Nhưng hãy nghĩ lớn một chút, với thị trường rộng lớn ngoài kia, khi ứng dụng phát triển thì việc chuyển ứng dụng sang hỗ trợ thị trường mới sẽ đỡ tốn kém hơn rất nhiều nếu bạn sử dụng String.xml.

2. Không sử dụng data-binding

Bạn có hay sử dụng hàm findViewById để tạo reference đến các View không?Ngoài ra, trong trường hợp chúng ta cũng cần giữ view-id để đảm bảo chúng ta đang sử dụng đúng view-id nào trong findViewById. Tất nhiên, việc này thì Android Studio có thể hỗ trợ bạn làm một cách tự động, nhưng chỉ những view-id nào có sẵn trong cùng layout-tree thì mới được tìm thấy bằng findViewById. Những thứ không tồn tại sẽ trả về null (có thể gây ra một NullPointerException).

Google đã giúp mọi thứ cực kỳ dễ dàng để tích hợp data-binding vào bất kỳ ứng dụng (mới hoặc dự án cũ) và loại bỏ tất cả view-reference mà bạn đã viết trước đó

Một vài lợi ích của việc sử dụng data-binding :

  • Chỉ references đến những view có sẵn(Điều này sẽ giúp bạn tránh được lỗi NullPointerException khi cố reference đến view không tồn tại).
  • Có hiệu năng tốt hơn so với việc sử dụng findViewById. Bởi data-binding sẽ duyệt toàn bộ layout-tree chỉ một lần thay vì luôn duyệt layout-tree khi hàm findViewById được gọi.
  • Namespace của bạn (hay nói cách khác là các Class/Function) vẫn “sạch”, và bạn không phải giữ reference đến tất cả các views.
  • Ngoài ra, bạn sẽ có thêm một số tinh năng hay ho trong data-binding như là loại bỏ hàm findViewById để có thể sử dụng những tính năng cao cấp hơn(Như ở bài viết này tác giả George Mount đã viết một adapter cho tất cả các RecyclerView- quá kinh! ^^)

3. Không ẩn API keys

Critical mistakes to avoid in Android development

Đây là một vấn đề khá phổ biến và chủ yếu là do các bạn developer còn ít kinh nghiệm không chút ý đến. Khi dự án được quản lý bằng SVN hay Git thì việc bạn đã từng commit một version lên server thì nó sẽ tồn tại trên đó mãi. Người ta có thể tra lại lịch sử commit và mò ra API key đó, kể cả bạn đã xóa cái API key trong một commit sau đó.

Bạn có thể xem bài viết này để tìm hiểu cách ẩn API key khỏi repository trong khi vẫn sử dụng chúng trong quá trình build test ứng dụng và chúng vẫn available trong source code của bạn.

4. Không xử lý hết các trạng thái vòng đời của Activity

Tất cả các cấu hình(configuration) hay logic của Activty hiện tại sẽ bị mất khi Activity bị destroyed hay re-created . Để đảm bảo rằng quá trình transition liền mạch cho người dùng, chúng ta cần lưu trữ trạng thái của ứng dụng trước khi thay đổi configuration. Sau đó, chúng ta có thể tái tạo lại trạng thái của ứng dụng thông qua các hàm onSaveInstanceState/ onRestoreInstanceState. Đừng để ứng dụng crash hay restart lại chỉ vì người dùng xoay ngang màn hình điện thoại nhé 🙂

5. Không tìm hiểu các phím tắt trong Android Studio

Điều này có thể không phản ánh chất lượng đoạn mã bạn viết. Nhưng nó rất ảnh hưởng đến tổng quan công việc của bạn. Android Studio được xây dựng dựa trên IntelliJ Idea (một IDE nổi tiếng về tính thân thiện với bàn phím). Điều này có nghĩa rằng, năng suất của developer có thể tăng lên bằng cách rất đơn giản đó là đầu tư một chút thời gian vào việc học các phím tắt. Dưới đây là một số tài nguyên mà mình yêu thích để giúp bạn học/thực hành các phím tắt:

  • KeyPromoter – Đây là một plugin IntelliJ (có sẵn trong Android Studio) sẽ hiển thị một hộp thoại hiển thị các lệnh phím tắt cho hành động bạn vừa thực hiện, bất cứ khi nào bạn sử dụng chuột để làm điều gì đó. Hãy tin mình đi, điều này sẽ làm bạn khó chịu và bạn buộc phải học những lối tắt đó. Bạn có thể tìm và tải xuống trong Android Studio settings.
  • Cheat-sheet : Các bạn có thể download về và in ra cho dễ tra cứu. Đây là bản tổng hợp tất cả các phím tắt của Android Studio cho cả 2 nền tảng Window, MacOS
  • Hướng dẫn chính thức – Đây là hướng dẫn chính thức được cung cấp bởi Jetbrains để làm chủ các phím tắt trên nền tảng IntelliJ.

Đó là tất cả những lỗi sai!

Đây là năm điều mà mình nghĩ rằng bất cứ ai là Android developer nên tập trung vào đầu tiên. Nếu bạn có bất kỳ đề xuất hoặc bất kỳ chủ đề nào khác, hãy comment bên dưới nhé. Đừng ngại ^_^

Bình luận. Đặt câu hỏi cũng là một cách học

avatar
  Theo dõi bình luận  
Thông báo