Code sạch nhà người ta: Đặt tên cho con

Author Avatar
Dev Nhà Người Ta Jul 05, 2017

Đây là bài đầu tiên trong series “Code sạch nhà người ta” (hi vọng còn có những bài tiếp theo nữa 😬). Series này chủ yếu trình bày lại các vấn đề trong quyển sách “Clean Code” nổi tiếng của Uncle Bob theo một cách ngắn gọn và dễ hiểu hơn (hi vọng vậy, again).


Sao lại là “đặt tên cho con”? Bài này sẽ nói về việc đặt tên trong code, cơ mà mình thiết nghĩ việc đặt tên cho biến nó cũng quan trọng như đặt tên cho con vậy đó, chỉ khác là, sẽ phải đặt nhiều tên hơn :D

Vấn đề muôn thuở

Có ai đó đã từng nói:

There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Thật ra câu trên là một joke. Đại ý ở đây là ‘đặt tên cho thứ gì đó’ là một việc rất khó. Có bao giờ bạn phải ngồi suy nghĩ rất lâu chỉ để đặt một cái tên hay, đúng cho một biến hay hàm mình dùng hay chưa?

Những Developers Nhà Người Ta không bao giờ đặt tên cho con một cách tào lao. Chỉ cần nhớ và áp dụng một số nguyên tắc sau đây mà họ dùng nhé:

Đặt tên có nghĩa và dễ phát âm

Hãy xem đoạn code js sau lấy ngày giờ hiện tại gán vào biến yyymmdstr

1
const yyyymmdstr = moment().format('YYYY/MM/DD');

Khoan, yyymmdstr là cái tên quỷ quái gì vậy? “year-month-day-string” chăng?

Chắc không ai đặt tên như vậy đâu, đa số sẽ đặt một cái tên có ý nghĩa như vầy:

1
enconst currentDate = moment().format('YYYY/MM/DD');

Đặt tên sao cho tìm kiếm được

Đã bao giờ bạn gặp một trường hợp như anh Tèo này chưa:
1 tháng trước, Tèo được giao làm một task xyz, Tèo làm rất nhanh, code chạy có vẻ đúng, Tèo hí ha hí hửng ngồi chơi Dota (vì chưa tới deadline mà). Rồi thì sản phẩm cũng được release. Tới hôm nay, đùng một cái có bug xảy ra ở phần Tèo làm đó, Tèo phải hotfix ngay trên production. Nhưng, oops, Tèo không tìm thấy cái đoạn code hôm trước mình viết ở đâu, vì search không ra kết quả.
Nguyên nhân là do Tèo đã không đặt một tên biến tốt, để có thể tìm thấy được.

Đây là đoạn code trước đó của Tèo:

1
2
// 86400000 là cái quái gì thế?
setTimeout(blastOff, 86400000);

Sau một hồi vật vã, hotfix đã chuyển thành coolfix, Tèo em mới tìm thấy chỗ code đó, và anh ta quyết định viết lại nó như vầy:

1
2
3
// Khai báo như một biến global.
const MILLISECONDS_IN_A_DAY = 86400000;
setTimeout(blastOff, MILLISECONDS_IN_A_DAY);

Bởi vậy, đặt tên sao để có thể tìm kiếm được rất quan trọng. Nếu không thằng Dev sau nó sẽ không kiếm đoạn code đó nữa, mà kiếm địa chỉ nhà bạn đấy 😈

Đừng hại não nhau!

Cuộc sống vốn dĩ đã phức tạp lắm rồi, nên tốt nhất đừng gây thêm khó khăn cho người khác bằng cách đặt những tên biến kì cục, hại đời nhau nữa.

Kết luận

Đặt sao cũng được, đặt đúng giùm tui tui cảm ơn


Code trong các ví dụ được lấy ở đây: Clean Code Javascript

This blog is under a CC BY-NC-ND 4.0 License
Link to this article: https://devnhanguoita.com/posts/Code-sach-nha-nguoi-ta-Dat-ten-cho-con/