You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Chia để trị rất hiệu quả trong ứng dụng lớn: Trong Clean Architecture thì code tầng nào thì ở đúng tầng nấy. Hạn chế được việc "code ở đâu cũng là code, chạy được là được". Nếu làm tốt được các bài toán nhỏ thì không có bài toán lớn nào không giải quyết được.
Rất dễ maintain và mở rộng: Việc tìm kiếm bug và lỗi logic sẽ trở nên dễ dàng và nhanh hơn, file code sẽ không nhiều vì chỉ làm đúng việc của nó. Vì các tầng độc lập với nhau thông qua các Interfaces nên việc mở rộng hoặc thay đổi các tầng sẽ không ảnh hưởng tới nhau. Điều này hạn chế các breaking change cũng như phải viết lại code (refactoring).
Rất dễ làm Unit Test: Các logic business của các tầng trong Clean Architecture chính là các Unit Test cần được kiểm thử rất cẩn thận. Vì sự độc lập thông qua Interfaces nên các mock test rất dễ triển khai. Việc này được thực hiện thông qua implement lại để coverage được tất cả các trường hợp.
Clean Architecture thường sẽ gồm 3 phần chính: Presentation,Domain,Data
Presentation module bao gồm các UI và Bloc classes. Nhiệm vụ của module này là tiếp nhận các event từ user và execute các use case tương ứng để trả về các thông tin cần hiển thị lên UI.
Domain module bao gồm các Use Case. Nói cách khác, đây là module chứa các business logic của app.
Data module bao gồm các Repository với nhiệm vụ nhận data từ các Use Case cũng như cung cấp data cho các Use Case. Data source có thể là từ các server khác nhau thông qua API, local database hoặc Shared Preference,…
Dependency Rule trong Clean Architure:
[https://tech.olx.com/clean-architecture-and-mvvm-on-ios-c9d167d9f5b3](Dependency Rule)
Nhờ vào dependency rule mà chúng ta đã tách được sự phụ thuộc lẫn nhau giữa các module. Mỗi khi chúng ta chỉnh sửa UI trong module Presentation, hay khi chúng ta chỉnh sửa Database trong module Data thì đều không ảnh hưởng đến module Domain. Điều này giúp code của chúng ta clean hơn và dễ dàng bảo trì hơn
Dependency Inversion(nguyên lý thứ 5 của SOLID) trong Clean Architure:
Các module cấp cao không nên phụ thuộc vào các module cấp thấp. Cả 2 nên phụ thuộc vào abstraction hoặc interface. Interface hay Abstract class còn có một cái hay khác là nó có thể dễ dàng mở rộng bằng cách thêm các abstract function nhưng không cần sửa đổi code. Điều này giúp chúng ta tuân thủ nguyên lý Open/Closed trong SOLID (một module nên được thiết kế sao cho dễ dàng mở rộng nhưng khó sửa đổi) góp phần làm tăng tính stable của Module
Lý do nên áp dụng Clean Architecture:
Clean Architecture thường sẽ gồm 3 phần chính: Presentation,Domain,Data
Dependency Rule trong Clean Architure:
[https://tech.olx.com/clean-architecture-and-mvvm-on-ios-c9d167d9f5b3](Dependency Rule)
Dependency Inversion(nguyên lý thứ 5 của SOLID) trong Clean Architure:
Tài liệu tham khảo
The text was updated successfully, but these errors were encountered: