Conventions trong Ruby on Rails.
Bài đăng này đã không được cập nhật trong 10 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