12/08/2018, 15:13

[Android] Object Oriented Tricks: Starter Pattern

Thông thường chúng ta sẽ xây dựng các objects tại một nơi, nó có thể là một method constructor, builder, static factory method, abstract factory method hoặc bất kỳ một Creational Patterns nào khác. Đôi khi khi object được tạo bởi framework cần thêm một số thông tin mà chúng ta phải cung cấp. ...

Thông thường chúng ta sẽ xây dựng các objects tại một nơi, nó có thể là một method constructor, builder, static factory method, abstract factory method hoặc bất kỳ một Creational Patterns nào khác. Đôi khi khi object được tạo bởi framework cần thêm một số thông tin mà chúng ta phải cung cấp. Trong android chúng ta có thể thấy ví dụ như class Activity. Activity được tạo bởi Android framework và chúng ta chỉ có thể thêm các attributes thông qua Intent.

DRY

Trong một khoảng thời gian dài, tôi add một comment vào đầu của class Activity nói đến tất cả các extras cần thiết để start một Activity đúng đắn. Trông nó tương tự như này:

Đối với tôi thì comment như vậy là đủ, Tôi đã gọi đến start TargetActivity từ rất nhiều nơi, rất nhiều class và startActivity(intent) được viết ở mọi chỗ đó. Điều đó là vi phạm nguyên tắc DRY : Don't Repeat Yourself.

Một ngày nào đó khi mà team và source codes lớn hơn, có rất nhiều thứ có thể xảy ra đối với class này:

  • Nhiều EXTRAS hơn
  • Comments không được đồng bộ với các extras thêm mới
  • Người khác có thể quên truyền extras
  • Bạn có thể quên thêm extras mới vào các chỗ gọi cũ.

Static Starter

Để tránh thất vọng, sẽ là tốt hơn nếu chúng ta định nghĩa một method bên trọng chính target class. Sử dụng static starter method cho việc này:

Android Studio cũng có một live template cho static starter:

Điều này đã giúp tôi tránh được rất nhiều khó khăn khi maintain một project với khoảng 150k lines trong khoảng thời gian 3 năm. Tôi hy vọng nó cũng giúp bạn.

HẾT Nguồn: Hacker Noon

0