Conventions trong Ruby on Rails.
Bài đăng này đã không được cập nhật trong 8 năm
Mình mới học về Ruby on Rails được một thời gian ngắn, cũng đã ăn hành khá nhiều lỗi về trình bày code , mình xin làm 1 bài tổng hợp nhỏ về các code conventions hay gặp để new mem có thể biết:
1. Các qui tắt chung
- Dùng 2 space.
- Dùng space trước và sau các dấu +, -, x, /, {, }, =.
- Không dùng space sau dấu (, [ và trước dấu ), ].
- Thêm dấu _ ở các số lớn. Ví dụ: 100000 –> 100_000.
2. Cú pháp
- Dùng (, ) ở khai báo hàm có truyền tham số, không dùng (, ) trong trường hợp hàm không nhận tham số.
3. Các câu lệnh điều kiện
-
Không dùng and, or hãy ùng &&, ||
-
Dùng unless thay cho if not.
-
Không dùng unless … else
-
Không dùng(, ) ở điều kiện trong câu if, unless
-
Dùng các hàm số có sẵn như x.even?,x.odd?, x.nil?, x.zero? thay cho các câu so sánh x % 2 == 0, x % 2 == 1, x == nil, x == 0.
-
Trong trường hợp thân câu if/unless/while/until chỉ có một dòng, dùng inline format.
-
Ví dụ:
do_something if some_condition
thay cho
if some_condition
do_something
end
4. Câu lệnh lặp
-
Hạn chế dùng câu for, nên dùng câu each.
-
Dùng until thay cho while not.
5. Khai báo và gọi hàm
-
Bỏ (, ) khi gọi các hàm không tham số
-
Nếu hàm có tham số, để các tham số trong()
Ví dụ: foo(param1, param2).
-
Không cần dùng return ở dòng cuối cùng trong khai báo hàm.
Ví dụ:
def some_method(some_arr)
some_arr.size
end
- Không dùng space giữa tên hàm và dấu (
- Dùng → thay cho từ khóa lambda
- Dùng các câu inline if thay cho các câu nested if.
Ví dụ:
# Bad
def compute_thing(thing)
if thing[:foo]
update_with_bar(thing)
if thing[:foo][:bar]
partial_compute(thing)
else
re_compute(thing)
end
end
end
# Good
def compute_thing(thing)
return unless thing[:foo]
update_with_bar(thing[:foo])
return re_compute(thing) unless thing[:foo][:bar]
partial_compute(thing)
end
5. Qui tắc đặt tên
- Tên function phải là động từ
6. Class, Module
- Hạn chế dùng def self.a_func, nên dùng self << class.
7. String
- Dùng #{} thay cho nối chuỗi. Ví dụ: email_with_name = "#{user.name} <#{user.email}>.
[] Tài liệu tham khảo: ahihi
All rights reserved