Đặt Tên Biến Chuẩn Ngay Từ Khi Bắt Đầu-Phần 1
Bài viết này hướng dẫn một loạt các quy tắc để đặt tên các biến của bạn. Vậy tại sao phải đặt tên biến đúng chuẩn? Lợi ích của việc sử dụng quy ước đặt tên cho các biến là chúng cho phép bạn biết nó dùng để làm gì là loại biến đó là gì? Điều này cực kỳ quan trọng bởi vì các ngôn ngữ hiện đại sử dụng type deduction tự động và không phải lúc nào cũng xem được đó là loại biến gì. Nó sẽ giúp bạn và những đồng dev khác dễ hiểu, code sạch và dễ dàng fix khi có bug cũng như để maintain sau này.
Vậy nên hãy ghi nhớ ngay và luôn các quy tắc đặt tên biến sau và xem nó có lợi như thế nào trong quá trình code của bạn.
1. Biến số nguyên (integers)
Một số giá trị chắc chắn là số nguyên, như biến tuổi hoặc năm. Mọi người đều hiểu ngay rằng biến tuổi hoặc biến năm là một số và cụ thể hơn là số nguyên. Vì vậy, bạn không phải thêm bất cứ thứ gì vào tên biến nữa.
Một trong những loại biến số nguyên được sử dụng nhiều nhất là đếm số lượng của một cái gì đó. Bạn sẽ nhìn thấy các loại biến đó trong hầu như các đoạn code. Trong trường hợp này, hãy sử dụng quy ước sau để đặt tên cho các loại biến đó: numberOf<Something>
hoặc <Something>Count
. Ví dụ: numberOfTickets
hoặc ticketCount
. Bạn có thể sử dụng tên biến là tickets
, nhưng vấn đề với tên biến đó là nó không xác định rõ loại biến và một biến có tên là tickets
thường mang nghĩa là một tập hợp (ví dụ: một mảng hoặc một danh sách).
Nếu đơn vị của một biến không hiển nhiên, hãy thêm một mô tả đơn vị ở cuối tên biến. Ví dụ, thay vì tooltipShowDelay
, bạn có thể sử dụng tooltipShowDelayInMillis
hoặc thậm chí là tooltipShowDelayInMillisecs
để rõ nghĩa hơn.
2. Số dấu phẩy động (Floating-Point Numbers)
Số dấu phẩy động không quá phổ biến như số nguyên, nhưng thỉnh thoảng bạn cũng cần chúng. Một số giá trị thực chất là các số có dấu phẩy động, như giá tiền, chiều cao, chiều rộng hoặc trọng lượng. Nếu bạn nghĩ rằng bạn cần lưu trữ một giá trị đo, thì nên sử dụng biến này.
Nếu tôi cần lưu trữ một số lượng không phải là số nguyên, tôi sử dụng một biến có tên <Something>Amount
, ví dụ rainfallAmount
hoặc moneyAmount
. Khi tôi thấy số lượng (amount) của một thứ gì đó trong code, tôi nghĩ rằng đó là một số dấu phẩy động.
Nếu đơn vị của một biến không rõ ràng, tôi thêm một mô tả đơn vị ở cuối tên biến, như widthInCentimet
, rainFallAmountInInchesPerHour
, angleInDegrees
, failPercent
hoặc failRatio
.
3. Booleans
Các biến Boolean chỉ có thể có một trong hai giá trị: true hoặc false. Hãy chắc chắn rằng bạn đặt tên cho các biến boolean theo mẫu sau: isSomething
, hasSomething
, doesSomething
, didSomething
, shouldDoSomething
hoặc willDoSomething
. Một số ví dụ khác như: isDisabled
, hasErrors
, allowsWhitespace
, didUpdate
, shouldUpdate
, willUpdate
. Một tên biến boolean chuẩn là tên ở dạng câu hỏi trong đó câu trả lời là đúng/sai hoặc có/không.
4. Chuỗi (string)
Các biến chuỗi rất phổ biến trong lập trình, như tên, tiêu đề, thành phố hoặc quốc gia. Khi cần lưu trữ dữ liệu số trong chuỗi hãy đặt tên rõ ra như sau <someValue>String
hoặc <someValue>AsString
.
Đoạn code sẽ trở nên rõ ràng hơn và dễ đọc hơn. Ví dụ:
// Javascript
const year = parseInt(yearAsString, 10);
5. Arrays, Lists và Sets
Khi đặt tên những biến này, nên sử dụng dạng số nhiều của danh từ, như customers
, errors
hoặc tasks
. Trong hầu hết các trường hợp, đặt tên như vậy là đủ bởi vì bạn không nhất thiết phải biết thêm thông tin gì cho biến này. Nhưng đôi khi bạn cũng có thể chỉ định việc thực hiện trong tên của biến. Ví dụ: queueOfTask, stackOfCards
hoặc orderedSetOfTimestamps
. Đừng bao giờ sử dụng một dạng tên biến số không ở số nhiều, như customerList
hoặc handleOperationset
, vì nó làm cho tên biến dài hơn một chút và trong nhiều trường hợp không cần thiết sẽ gây ra hiểu nhầm và bạn phải thực thi các hành động không cần thiết để kiểm tra lại biến.
6. Map
Map là một cấu trúc dữ liệu dạng key-value. Đây là lý do tại sao chúng ta nên đặt tên map bằng cách sử dụng mẫu keyToValueMap
. Giả sử chúng ta có một map chứa số lượng đơn đặt hàng cho mỗi khách hàng vậy chúng ta sẽ đặt tên là là customerToOrderCountMap. Hoặc nếu chúng ta có một danh sách các nhà cung cấp cho mỗi ID sản phẩm, biến map sẽ được đặt tên là ProductIdToSuppliersMap
.
// Java
final int orderCount = customerToOrderCountMap.get(someCustomer)
final List<Supplier> suppliers = productIdToSuppliersMap.get(1234)
// Javascript
Object.entries(customerToOrderCountMap).map(([customer, orderCount]) => ...)
Tạm kết
Trong phần sau chúng ta sẽ thảo luận thêm về các quy tắc đặt tên cho những biến còn lại. Hãy để ý đến những điều nhỏ như từ cách đặt tên biến để giúp cho code của bạn sạch và dễ hiểu hơn.