Coding conventions and standards in ruby
Bài đăng này đã không được cập nhật trong 9 năm
Với những kinh nghiệm lập trình ruby có được sau một thời gian dài tìm tòi và học hỏi qua bài viết này mình xin chia sẽ các cách viết code nhìn đẹp mắt, ngắn gọn và hiệu quả. Nếu có cách nào tối ưu, hiệu quả hơn xin các bạn comment bên dưới để mình học hỏi thêm
- Đừng sử dụng
and
vàor
thay vào đó hãy sử dụng&&
và||
- Bỏ hết
comment
có trong dòng code của bạn
#show full_name of company
def full_name company
"#{company.first_name} #{company.last_name}"
end
- Thay vì dùng
if not
hoặcif !
thì hãy dùngunless
bad code
if not @company.nil?
@job.company_id = @company.id
end
good code
unless @company.nil?
@job.company_id = @company.id
end
4. Thay vì dùng `while !` thì hãy dùng `until`
```ruby
bad code
while ! @person.ready?
@person.stop
end
good code
until @person.ready?
@person.stop
end
- Viết ngắn gọn nhất các kiểm tra logic
bad code
if @company.count == @job.count
full_name = @company.name
else
full_name = @job.name
end
good code
full_name = if @company.count == @job.count
@company.name
else
@job.name
end
bad code
if @job.name.blank?
@company.name = @cadidate.name
else
@company.name = @job.name
end
good code
@company.name = @job.name || @candidate.name
bad code
<% if @user.role == "admin" %>
<%= link_to @company.full_name, edit_company_path(@company) %>
<% else %>
<%= @company.full_name %>
<% end %>
good code
<%= link_to_if @user.role == "admin", @company.full_name, edit_company_path(@company) %>
- Cách lấy từng phần tử ra khỏi mảng
colors = ["red", "blue", "white", "black"]
bad code
for color in colors
puts color
end
good code
colors.each do |color|
puts color
end
- Tránh các truy vấn dữ liệu trên view, đưa các truy vấn này vào controller
bad code
index.html.erb
<%= Employee.where(name_company: "Framgia").each do |employee| %>
<%= employee.full_name %>
<% end %>
- Viết ngắn gọn hơn với phương thức
map
vàpluck
bad code
Company.all.map {|company| company.id}
good code
Company.all.map &:id
very good code
Company.pluck :id
- Bỏ dấu nháy kép đối với chuỗi string trong file
ja.yml
vàen.yml
khi ta sử dụng I18n
bad code
result: "通常表示"
date_time: "日時"
good code
result: 通常表示
date_time: 日時
- Những file dùng chung giữa 2 chức năng trở lên thì phải đặt vào thư mục shared
- Không truy vấn cơ sở dữ liệu trên view
- Với nhiều lệnh elsif thì thay if-elsif-else bằng case-when
bad code
if score < 4
puts "F"
elsif score == 5
puts "D"
elsif score == 6
puts "C"
elsif score == 7
puts "B"
else
puts "A"
end
good code
case
when score < 4
puts "F"
when score == 5
puts "D"
when score == 6
puts "C"
when score == 7
puts "B"
else
puts "A"
end
All rights reserved