clean-code-tat-ca-tu-mot-cai-ten

Clean code – Tất cả từ một cái tên

Thông thường những bạn mới ra trường, thường những năm đầu code rầm rầm. Nếu được hướng dẫn bởi Senior thì còn được chỉ dạy về Clean code. Còn lại thì đa phần chưa quan tâm gì mấy tới clean code, hay tới design pattern, cứ code chạy là được.

Làm khoảng 1,2 năm thì bắt đầu có ý thức hơn, tìm hiểu về clean code để áp dụng. Nhưng đôi khi lại nghĩ clean code là cái gì đó phức tạp với các đoạn code dài loằng ngoằng, thuật toán phức tạp.

Thực tế không phải như vậy, clean ở đây đôi khi chỉ là cái cách đặt tên class, tên hàm, tên biến sao cho dễ hiểu. Hãy cùng Kieblog tìm hiểu Clean code từ những điều đơn giản nhất nha.

Luôn chú ý viết source sao cho người sau đọc dễ hiểu, không càm ràm. Đặc biệt là không chửi thề!

1. Clean code từ cái tên

Cùng xem một vài ví dụ dưới đây. Hãy tượng tượng bạn là leader và được giao review code. Các code nào sẽ được bạn đánh giá cao?. Cái code nào sẽ tiện để maintainance sau này?

// Khai báo biến tổng số ngày trong tháng
int d;
int totalDaysInMonth;
// Định nghĩa 2 biến start và end
class StartTimeEndTime {
    private Date startmdhms;
    private Date endmdhms;
}
và 
class StartTimeEndTime {
    private Date startTimeStamp;
    private Date endTimeStamp;
}

2. Don’t be cute – dễ thương làm gì

Nguyên tắc đặt tên cho bất cứ thứ gì khi lập trình tất nhiên là phải rõ nghĩ. Tuy nhiên, không phải rõ nghĩa nên viết thêm cho loằng ngoằng rắc rối cả ra.

Cuteness in code often appears in the form of colloquialisms or slang. For example, don’t use the name whack() to mean kill(). Don’t tell little culture-dependent jokes like eatMyShorts() to mean abort().

Viết code cute sử dụng những từ như tiếng lóng hoặc không thông dụng gây ra hiểu lầm. Ví dụ, đừng sử dụng whack() để ám chỉ kill() process hay gì đó. Đừng sử dụng eatMyShorts() để ám chỉ abort()

Việc đặt tên tốt nhất theo quy chuẩn chung, để các lập trình viên khác có thể hiểu được. Môi trường làm việc bây giờ quốc tế hóa.

Source code commit lên git có thể cho nhiều người khác tham khảo nên chú ý phần Clean code.

// Không cần quá cầu kì, easy to understand là quan trọng nhất
private void kill(Thread customThread) {
}

// Đừng dùng từ phổ thông, dev khác sẽ không hiểu
// Hoặc dừng lại rất lâu để đọc
private void whack(Thread customThread) {
}

Đừng sử dụng từ địa phương, cũng đừng sử dụng những từ ngữ không quá phổ thông.

3. Don’t pun – đừng chơi chữ

Chơi chữ ở đây không mang nặng tính chất như sử dụng nghĩa bóng, cũng không phải nói xiên xẹo, móc mỉa một số người.

Chơi chữ ở đây chỉ đơn giản được hiểu là:

Avoid using the same word for two purposes. Using the same term for two different ideas is essentially a pun.

Sử dụng cùng một từ cho hai mục đích khác nhau. Sử dụng cùng một thuật ngữ cho hai ý tưởng khác nhau thì gọi là chơi chữ.

Ví dụ dễ hiểu nhất với Pun – Chơi chữ là method add(). Giả sử ta viết method add để thêm một số phần tử vào array list đã có sẵn. Khi nào method này trở thành chơi chữ?

Cùng là method add nhưng lại insert một record mới vào database. Cùng method add nhưng lại dùng để thêm item vào một list (như thế không gọi là Clean code, vì sẽ khiến người đọc confuse)

// Insert thường dùng cho database
private void insert(RecordItem record) {
}

// Chú ý rõ nghĩa khi dùng, append dùng cho list, ...
private void append(String item) {
}

4. Class names và method names

Một số bạn bắt đầu quan tâm tới Clean code thường nghĩ về những đoạn code phức tạp, giải thuật phức tạp. Nhưng thực tế không phải vậy Clean code đôi khi chỉ đơn giản bắt nguồn từ một cái tên class, một tên biến.

Classes and objects should have noun or noun phrase names like Customer, WikiPage, Account, and AddressParser.

Classes và object nên là danh từ hoặc cụm danh từ. Ví dụ như Customer, WikiPage, Account và AddressParser
clean code meaning name
Đối với kĩ sư phần mềm, đôi khi nghĩ một cái tên mới là công việc chiếm nhiều thời gian nhất. Nguồn ảnh/ Source: Twitter

Một lưu ý khác là class name không bao giờ nên là động từ. Không ai viết class Flight, chỉ có interface Flightable, thay vào đó người ta viết class Bird.

Ngược lại với classes thì method lại nên là động từ hoặc cụm động từ.

Methods should have verb or verb phrase names like postPayment, deletePage, or save.

Method nên có động từ hoặc cụm động từ như postPayment, deletePage hoặc save.

Đối với các method thực hiện kiểm tra các điều kiện boolean, nên bắt đầu bằng is. Như ví dụ function isPosted dưới đây.

string name = employee.getName(); 
customer.setName("mike"); 
if (paycheck.isPosted())... 

5. Tham khảo

Có gì thắc mắc cứ comment đây nha! - Please feel free to comment here!
Chia sẻ bài viết