[]: # Language: markdown
[]: # Path: readme.md
Có nhiều lý do tại sao viết mã sạch lại quan trọng, tuy nghiên điều quan trọng cần nhớ là viết mã thì dễ nhưng đọc thì khó
- Làm việc nhóm
- Có thể tái sử dụng
- Bạn sẽ cảm thấy thích code của mình hơn, thích làm việc hơn, thích đọc code hơn
- Bạn sẽ thấy sự phát triển
Các bạn đang truyền tải cho các developer khác về TÁC PHẨM của mình, vì thế các bạn cần phải có một cách để viết mã sạch và một kiến trúc sạch.
- Stay native
Tránh sử dụng một ngôn ngữ này để viết một ngôn ngữ khác thông qua chuỗi ký tự 2. Signal to Noise Ratio
Tín hiệu code tuân thủ theo nguyên tắc TED (Terse - Ngắn gọn; Expressive - Hàm ý; Does one thing - Làm một việc cụ thể)
Nhận dạng Noise:
- Có tính lặp lại
- Class lớn
- Method dài
- Độ phức tạp cao
- Thụt lề quá mức
- Comments không cần thiết
- Đặt tên tệ
- Self-Documenting Code
- Trình bày ý định một cách rõ ràng để người đọc có thể hiểu chính xác những gì mà đang làm
- Sử dụng các lớp trừu tượng (abstract) để đi qua ở các mức độ chi tiết khác nhau
- Định dạng dễ đọc để tối ưu hóa trải nghiệm người đọc
- Ưu tiên mã tự diễn đạt hơn comments
Đặt tên có tác động rất lớn tới khả năng đọc mã của bạn, vì thế các bạn cần phải có một cách để đặt có ý nghĩa, tuân thủ theo các nguyên tắc đặt tên của mỗi ngôn ngữ lập trình (C#, Js ...)
C# naming convention Javascript naming convention SQL naming convention Java naming convention
4 lý do để tạo ra 1 method mới
- Tránh lặp lại code
- Loại bỏ thụt lề quá mức
- Giảm thời gian tồn tại của biến
- Thực hiện một hành động cụ thể
Các class như là headings của một cuốn sách Lý do để tạo 1 class mới:
- Mô hình hóa 1 đối tượng (New Concept): những đối tượng này có thể mô hình hóa các khái niệm cụ thệ hoặc trừu trượng
- Chia tách các lớp riêng biệt (Low Cohesion): Nếu các lớp ít liên quan đến nhau thì đó là dấu hiệu cho thấy có sự gắn kết thấp, vì thế cần được chia thành các lớp riêng biệt để hướng tới nhiều mục tiêu hơn
- Thúc đẩy tái sử dụng (Promote Reuse: Small, targeted): , ngay cả 1 một đoạn mã là 1 phần của lớp lớn hơn hãy tách ra thành 1 method và đặt nó vào một lớp riêng nếu nó hữu ích cho chương trình
- Giảm độ phức tạp của lớp (Reduce complexity):
- Xác định một nhóm dữ liệu
Các comments là cần thiết và hữu ích cho dự án của bạn. Các comment nên tránh
- Dư thừa
- Sử dụng các comments hữu ích
Clean Architecture là một tập hợp các pattern, practices và Principles để tạo ra một kiến trúc phần mềm hiện đại đơn giản, dễ hiểu, linh hoạt, kiểm thử và dễ bảo trì
What's bad architecture?
- Phức tạp (Complex)
- Rời rạc, không có sự gắn kết (Incoherent)
- Cứng nhắc, không thể tùy biến (Rigid)
- Dễ đứt gãy (Brittle): Sửa một đoạn mã ở một lớp có thể
- Không thể hay rất khó để maintain (Lấy ví dụ 1 lớp của VAS)
Triến trúc tốt là gì
- Đơn giản
- Dễ hiểu
- Linh hoạt
- Dễ dàng kiểm thử
- Dễ dàng bảo trì
Điều quan trọng cần nhớ là: kiến trúc được thiết kế cho developer chứ không phải là cho các kiến trúc sư hay máy
- Giảm thiểu chi phí
- Tối đa hóa giá trị
- Tối đa hóa tỷ suất lợi nhuận