0

Coding conventions and standards in ruby

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

  1. Đừng sử dụng andor thay vào đó hãy sử dụng &&||
  2. 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
  1. Thay vì dùngif not hoặc if ! thì hãy dùng unless
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

  1. 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) %>

  1. 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

  1. 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 %>

  1. Viết ngắn gọn hơn với phương thức mappluck

    bad code
    Company.all.map {|company| company.id}
    good code
    Company.all.map &:id
    very good code
    Company.pluck :id

  1. Bỏ dấu nháy kép đối với chuỗi string trong file ja.ymlen.yml khi ta sử dụng I18n

bad code
    result: "通常表示"
    date_time: "日時"
good code
    result: 通常表示
    date_time: 日時

  1. 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
  2. Không truy vấn cơ sở dữ liệu trên view
  3. 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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí