Ruby Coding Convention (Phần 3)
Ở phần hai, tôi đã giới thiệu về cú pháp trong Ruby, làm sao để các câu lệnh điều kiện, vòng lặp, block, methods … dễ hiểu, dễ đọc hơn, có qui tắc chung với cả team. Phần tiếp theo sẽ đề cập tới cách đặt tên và cách comment sao cho dể hiểu.
Naming
- Tất cả các cách đặt tên biến, tên hàm cần được viết bằng tiếng Anh, và chỉ sử dụng các kí tự ascii
- Đặt tên biến, tên hàm bằng chữ viết thường, cách nhau bởi dấu
_
123456# good:some_symboldef some_method...end - Đặt tên Class bằng cách viết hoa các chữ cái đầu tiên
ClassName
- Đặt tên hằng số bằng các chữ viết hoa toàn bộ, cách nhau bởi dấu
_
12345# badSomeConst = 5# goodSOME_CONST = 5 - Nhưng hàm trả về giá trị boolean cần được kết thúc bởi dấu
?
. Ví dụArray#empty?
- Đối với những hàm có thể gây ra hậu quả gì đó (ví dụ như thay đổi đối tượng
self
) nên được kết thúc với dấu!
123456789101112131415161718192021# bad - Nếu đây chỉ là hàm update thông thườngclass Persondef update!endend# goodclass Persondef updateendend# goodclass Person# phân biệt với hàm update ở dưới. Trong hàm này có xử lí 1 tác vụ gì khácdef update!enddef updateendend - Sử dụng
flat_map
thay chomap ... .flatten
12345# badall_songs = users.map(&:songs).flatten.uniq# goodall_songs = users.flat_map(&:songs).uniq - Sử dụng
reverse_each
(Không tạo ra array mới) thay choreverse.each
12345# badarray.reverse.each { ... }# goodarray.reverse_each { ... }
Comments
- Mỗi comment nên cách dấu
#
một dấu cách - Tránh những comment không cần thiết
1count += 1 # tăng giá trị biến đếm lên 1 - Comment cũng cần được update. Những comment không được update nguy hiểm hơn cả không comment
- Tránh comment cho những đoạn code chưa được refactor, rườm rà. Hãy refactor trước để code có thể dễ hiểu.
- Đối với những comment dài, nên xuống dòng, và dòng dưới nên thụt vào 2 dấu cách
- Thêm
TODO
đối với những chức năng cần được bổ sung về sau - Thêm
FIXME
đối với những chức năng cần được thay đổi, sửa - Thêm
OPTIMIZE
đối với những đoạn code chưa tối ưu làm ảnh hưởng tới performance - Thêm
HACK
đối với những đoạn code vi phạm practices và cần được refactor loại bỏ - Thêm
REVIEW
đối với những chức năng cần được xác nhận lại