+1

writing beautiful code

Ruby thật sự là một ngôn ngữ đẹp và ngữ nghĩa. Nó tập trung vào sự đơn giản và hiệu suất và dễ đọc và viết rất tự nhiên và dưới đây là một số cách viết để làm nó đẹp hơn

Map

Map sẽ iterator từng element của mảng lấy ra được những thứ mong muốn từ và kết quả là một mảng mới: syntax

array.map { |element| // handle element }
VD: 
user_ids = users.map {|user| user.id}
thay vi thế bạn viết như sau 
====> user_ids = users.map(&:id)

Select

Đôi khi chúng ta sử dụng map và code của chúng ta trông như thế này:

even_numbers = [1, 2, 3, 4, 5].map { |element| element if element.even? } # [nil, 2, nil, 4, nil]
even_numbers = even_numbers.compact # [2, 4]

Nhưng thực sự chúng ta chỉ muốn kết quả là [2, 4] nhưng chúng ta lại tốn đến 2 bước và select sẽ giúp chúng ta gọn gàng hơn chỉ với 1 dòng:

[1, 2, 3, 4, 5].select { |element| element.even? }

và đẹp hơn nữa:

[1, 2, 3, 4, 5].select(&:even?)

Sample

Khi bạn muốn lấy ra một phần từ ngẫu nhiên trong mảng. Nếu là người mới bạn sẽ nghĩ ngay đến random :

[1, 2, 3][rand(3)]

Nó trông rất dễ hiểu, thay vì đó bạn có thể dùng shuffle :

[1, 2, 3].shuffle.first

hay dùng [1, 2, 3].sample

Ruby syntax

Ruby có những syntax thật sự rất thú vị, khác với như những ngôn ngữ khác, khi một phương thức bạn muốn trả vê một kết quả cho nó bạn cần phải return nhưng ruby thì không cần thế. Ruby sẽ ngầm trả về kết quả đó giúp bạn. thay vì

def get_user_ids(users)
  return users.map(&:id)
end

--->

def get_user_ids(users)
  users.map(&:id)
end

Method có dấu hỏi chấm (?)

Một trong những tính năng của Ruby lạ đó là "dấu hỏi (?)". Bạn có :

movie.awesome # => true

và bạn thử sử dụng ? :

movie.awesome? # => true

bằng ngữ ngĩa như vậy tương tự có các method any?, present?. ..

Nhúng biến vào chuỗi

Khi bạn muốn in ra một chuỗi đại loại như thế này :

programming_language = "Ruby"
programming_language + " is a beautiful programming_language" # => "Ruby is a beautiful programming_language"

trông sẽ đẹp hơn:

programming_language = "Ruby"
"#{programming_language} is a beautiful programming_language" # => "Ruby is a beautiful programming_language"

Phương thức try

user.id unless user.nil?

Thay vì chúng ta phải kiểm tra user có nil hay không thì mới gọi user.id, việc dùng try sẽ đơn giản hơn:

user.try(:id)

That’s it!

😄 đó là nhưng đoạn code mình thấy thú vị trong quá trình làm việc với ruby


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í