Clean code - Đặt tên có ý nghĩa
Overview
Đặt tên có ý nghĩa như thế nào trong lập trình?
Bạn có biết câu nói: There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton
Khi lập trình bạn phải đặt tên cho biến, hàm, package ... một code tốt ngoài việc đảm bảo tính chính xác còn phải dễ dàng đọc hiểu, nâng cấp và chỉnh sửa và việc đặt tên chính đúng giúp việc này dễ dàng hơn.
Tên thể hiện ý nghĩa và mục đích sử dụng.
Tên của lớp, biến và phương thức phải có ý nghĩa và chỉ rõ một phương thức thực hiện chức năng gì hoặc thuộc tính là gì.
Chúng ta đi vào một ví dụ cụ thể:
1public List<Merchant> getList() {
2 List<Merchant> list = new ArrayList<>();
3 for (Merchant merchant: theList) {
4 if (merchant.getStatus() == 1){
5 list.add(merchant);
6 }
7 }
8 return list;
9}
Có các vấn đề như sau:
- getList:
- Get list gì ở đây?
- Lấy list merchant hoạt động
- => đặt tên hàm: getActiveMerchants
List<Merchant> list = new ArrayList<>()
list
ở đây là gì?- Là danh sách merchant hoạt động
- => đặt tên biến: activeMerchants
merchant.getStatus() == 1
:1
là gì- Trạng thái hoạt động của merchant
- => tạo 1 biến với tên:
int activeStatus = 1
1public List<Merchant> getActiveMerchants() {
2 List<Merchant> activeMerchants = new ArrayList<>();
3 int activeStatus = 1;
4 for (Merchant merchant: theList) {
5 if (merchant.getStatus() == activeStatus){
6 activeMerchants.add(merchant);
7 }
8 }
9 return activeMerchants;
10}
Tên biến phải đọc được
Date yyyyMMdd
Đừng làm thế. Chúng ta đã nói ở trên tên biến thể hiện mục đích của nó. Trường này chúng ta dùng làm gì.
Ví dụ: nếu đây là thời gian khởi tạo ta có thể đặt là createTime
Hạn chế viết tắt
Hạn chế viết tắt nhất có thể. Khi viết tắt mà còn viết tắt từ tiếng Việt nữa thì rất khó để biết cái tên đó muốn thể hiện gì.
Ví du: hvt
viết tắt cho Họ và tên nhưng không ai dịch ra được đâu hãy sử dụng fullName
Hạn chế lặp lại ngữ cảnh
Ví dụ bạn có một Object với tên Merchant
Thì thay vì:
merchantName => name
merchantId => id
Một số convention chung
Class: là danh từ
Method: là động từ
Không đặt tên 1 ký tự (trừ i, j trong loop)