Ruby Coding Convention (Phần 3)
January 23, 2014

Ở 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
_# good :some_symbol def 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
_# bad SomeConst = 5 # good SOME_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!# bad - Nếu đây chỉ là hàm update thông thường class Person def update! end end # good class Person def update end end # good class 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ác def update! end def update end end - Sử dụng
flat_mapthay chomap ... .flatten# bad all_songs = users.map(&:songs).flatten.uniq # good all_songs = users.flat_map(&:songs).uniq
- Sử dụng
reverse_each(Không tạo ra array mới) thay choreverse.each# bad array.reverse.each { ... } # good array.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
count += 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


