Clean Code - Chapter 17
Viết bởi Administrator
18, TH 04, 2023
Chương 17: Dấu hiệu của mã xấu và Kinh nghiệm thực tiễn
Table of Contents
1. Các chú thích - Comments
Mã | Tóm tắt | Mô tả |
C1 | Thông tin không phù hợp | |
C2 | Chú thích lạc hậu | |
C3 | Chú thích thừa thãi | |
C4 | Chú thích được viết không tốt | |
C5 | Mã ở dạng ghi chú |
2. Môi trường - Environment
Mã | Tóm tắt | Mô tả |
E1 | Build hệ thống với nhiều bước | |
E2 | Kiểm thử hệ thống với nhiều bước |
3. Các hàm - Functions
Mã | Tóm tắt | Mô tả |
F1 | Quá nhiều đối số | Các hàm nên có ít đối số. Tốt nhất là sử dụng các hàm không có đối số, sau đó là hàm với một, hai hoặc ba đối số. Sử dụng nhiều hơn ba đối số là có vấn đề và phải ghi nhớ luôn luôn tránh trường hợp này. |
F2 | Đối số đầu ra | |
F3 | Đối số cờ hiệu | Đối số này chứng tỏ hàm thực thi nhiều hơn 1 nhiệm vụ. |
F4 | Hàm chết |
4. Tổng quát - General
Mã | Tóm tắt | Mô tả |
G1 | Sử dụng nhiều ngôn ngữ trong một tập tin mã nguồn | |
G2 | Không thực hiện các hành vi hiển nhiên | |
G3 | Hành vi không chính xác tại các biên phạm vi | Các lập trình viên thường viết các hàm mà họ cho rằng chúng sẽ hoạt động, và sau đó tin vào trực giác của mình hơn là nỗ lực để chứng minh rằng chúng hoạt động. |
G4 | Lờ đi các điều hiện an toàn | Tắt các cảnh báo của trình biên dịch để build thành công chương trình. |
G5 | Sự trùng lặp | Xếp hạng nguyên tắc này ở vị trí thứ 2, sau nguyên tắc mọi bài kiểm thử đều phải thỏa mãn. |
G6 | Sai mức trừu tượng | |
G7 | Các lớp cơ sở phụ thuộc vào các lớp kế thừa | |
G8 | Quá nhiều thông tin | |
G9 | Mã chết | |
G10 | Sự phân chia theo chiều dọc | |
G11 | Không nhất quán | |
G12 | Sự lộn xộn | |
G13 | Liên kết giả | |
G14 | Sự xâm lấn tính năng | |
G15 | Các đối số là bộ chọn | |
G16 | Ý định mập mờ | Không viết tắt |
G17 | Nhiệm vụ đặt sai chỗ | |
G18 | Sử dụng static không phù hợp | |
G19 | Sử dụng tên biến có tính giải thích | |
G20 | Tên hàm nển thẻ hiện chức năng của hàm | |
G21 | Hiểu thuật toán | |
G22 | Hữu hình hóa các phụ thuộc logic | |
G23 | Sử dụng tính đa hình thay vì câu lệnh if/else hoặc switch/case | |
G24 | Tuân theo các quy ước chuẩn | |
G25 | Thay thế con số đặc biệt bằng biến hằng số có tên | |
G26 | Hãy chính xác | |
G27 | Cấu trúc quan trọng hơn quy ước | |
G28 | Đóng gói các điều kiện | |
G29 | Tránh các điều kiện phủ định | |
G30 | Mỗi hàm chỉ nên thực hiện một nhiệm vụ | |
G31 | Các ghép nối thời gian ẩn | |
G32 | Đừng tùy tiện | Có lý do cho các tổ chức code của bạn. |
G33 | Đóng gói các điều kiện biên | |
G34 | Nên viết cách hàm lùi xuống chỉ một mức độ trừu tượng | |
G35 | Đặt các thông số cấu hình ở cấp cao | |
G36 | Tránh việc chuyển tiếp bắc cầu |
5. Tên gọi - Names
Mã | Tóm tắt | Mô tả |
N1 | Chọn tên diễn đạt rõ nghĩa | |
N2 | Chọn tên phù hợp với mức độ trừu tượng | |
N3 | Sử dụng thuật ngữ ở nơi có thể | |
N4 | Những cái tên rõ ràng | Bad: doRename() Good: renamePageAndOptionallyAllReferences() |
N5 | Sử dụng các tên dài cho các phạm vi lớn | |
N6 | Tránh việc mã hóa | |
N7 | Tên nên mô tả tác dụng phụ | VD: Nếu trong hàm có khởi tạo object Bad: GetObject() Good: GetOrCreateObject() |
6. Các kiểm thử - Tests
Mã | Tóm tắt | Mô tả |
T1 | Các kiểm thử không đầy đủ | |
T2 | Sử dụng công cụ kiểm soát độ bao phủ! | Coverage Tool |
T3 | Đừng bỏ qua các kiểm thử không quan trọng | |
T4 | Mỗi một kiểm thử bị bỏ qua là một câu hỏi về sự mơ hồ | |
T5 | Kiểm tra các điều kiện | |
T6 | Kiểm tra triệt để các lỗi ở gần nhau | |
T7 | Nhìn vào các khuôn mẫu của của các kiểm thử thất bại | |
T8 | Nhìn vào các khuôn mẫu của độ bao phủ kiểm thử | |
T9 | Các kiểm thử nên chạy nhanh |
Bài viết liên quan
Hiện tại chưa có bài viết nào