writing beautiful code
Bài đăng này đã không được cập nhật trong 6 năm
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