Press "Enter" to skip to content

Category: Design

SOLID – Liskov Substitution

Liskov Substutition là một nguyên tắc khá trừu tượng. Có một vài ví dụ kinh điển như con vịt đồ chơi trong họ nhà vịt, hay hình vuông có thừa kế từ hình tam giác hay không. Cùng xét một một best practice điển hình, phổ biến mà có thể liên tưởng tới Liskov Substitution: Khởi tạo giá trị mặc định cho thuộc tính Việc này thường là để giải quyết Null Exception. Có nghĩa…

Leave a Comment

SOLID – Đóng/ Mở (P2)

Phần này tôi muốn đưa tới các bạn một ví dụ thực tế về Open/Close, một tình huống cân đo đong đếm giữa Extend hay là Modify. Cùng xem biểu đồ lớp dưới đây mô tả giải pháp cho chức năng chuyển đổi một model thành một trang markup (html hay xml …).Đây là một phần code trong dự án của tôi, bao gồm một phần code cũ và một phần code mới được refactor.…

Leave a Comment

SOLID – Đóng/ Mở (P1)

Tôi có được nghe hai lần câu chuyện ở một công ty lớn ở Việt Nam, một Solution Architect đã từ chối một pull request của đồng nghiệp với lý do các thay đổi không tuân theo nguyên tắc Đóng/Mở. Tôi nghĩ rằng đã có một yêu cầu từ khách hàng và lập trình viên đã sửa đổi một lớp sẵn có để thực hiện yêu cầu ấy. SA đã từ chối vì theo SA,…

Leave a Comment

SOLID – Đơn nhiệm (P3)

Trong bài trước, tôi đã đề cập đến nhầm lẫn cơ bản dẫn đến hiểu sai về đơn nhiệm. Trong bài này, tôi muốn đưa ra một cách tiếp cận để giúp chúng ta có thể đạt được tính đơn nhiệm trong những dòng code của mình. Trước tiên, hãy chú ý đến các điểm sau: Đơn nhiệm không chỉ áp dụng cho class Trong định nghĩa về đơn nhiệm chỉ nói về class, nhưng…

Leave a Comment

SOLID – Đơn nhiệm (P2)

Trong bài trước tôi đã trình bày một vài ví dụ lấy từ mã nguồn của Microsoft về việc vi phạm Đơn nhiệm (và kể cả một số lỗi coding convention thông thường). Một trong những lý do là thiết kế cũng như kiến trúc mà chúng ta tường dùng không đảm bảo được sự tuân thủ. Điều này thực ra cũng không có gì to tát. Các nguyên tắc vốn không thể tuân thủ…

Leave a Comment

Ba cách xử lý sự kiện

Repo: https://github.com/refacore/ioc-event Xử lý sự kiện là kĩ thuật được sử dụng phổ biến. Các nền tảng cung cấp các cách khác nhau để xử lý sự kiện. Chúng ta có thể lựa chọn các chức năng được cung cấp sẵn hoặc tự xây dựng một bộ xử lý của riêng mình. Dưới đây là 3 phương án với C#. event của C Khai báo event và event theo cách mà C# cung cấp. Đây…

Leave a Comment

SOLID – Đơn nhiệm (P1)

Bài SOLID là thay đổi đã lướt qua một chút các nguyên tắc trong SOLID. Bài này chúng ta cùng bàn về nguyên tắc đầu tiên Single Responsibility – Đơn Nhiệm. Mỗi class chỉ nên có duy nhất một lý do để thay đổi Đây là một nguyên tắc đơn giản và tôi nghĩ ai cũng hiểu, nhưng nó lại nguyên tắc hay bị vi phạm và dễ vi phạm nhất. Dù đơn giản nhưng…

Leave a Comment

SOLID là thay đổi

Trong bài trước SOLID – Tổng quan, tôi đưa ra quan điểm rằng SOLID không nhằm tạo ra những dòng code bất tử mà nhằm tạo ra những dòng code sẵn sàng thay đổi. Có thể cái tên SOLID khiến ta có chút liên tưởng ngược lại, nhưng từng nguyên tắc trong đó lại toàn nói về sự thay đổi. Single Responsibility – không có nhiều hơn một lý do để thay đổi class Ngay…

Leave a Comment