DEV Community

Keyword Arguments of Ruby makes code more clear

chenge on December 26, 2018

In this video the speaker demoed the pros of KWArgs. In the pic, upper code is obviously more clear. So when should you use it? I think, when i...
Collapse
 
edisonywh profile image
Edison Yap • Edited

Didn't watch the video, but what I find interesting is that keyword arguments did not exist until Ruby 2.0, which means before Ruby 2.0, there's a totally different way to do hack it, and you'll sometimes see this in the wild :) (I've encountered this in Rails' DateTime library)


# Ruby 2.0
def method(first:, second:)
  puts "First: #{first}, Second: #{second}"
end

# Ruby 1.9
def method(options={})
  first = options.fetch(:first)
  second = options.fetch(:second)
  puts "First: #{first}, Second: #{second}"
end

robots.thoughtbot.com/ruby-2-keywo...

Collapse
 
chenge profile image
chenge

Yes, it simplify code. Very useful.

Collapse
 
burdettelamar profile image
Burdette Lamar

Seems right as shown, but perhaps only for .new?

For any other method:

  • If the parameters are related, could they form a class and be passed as an object?

  • If not, does the method lack a unified purpose?

Collapse
 
chenge profile image
chenge

Right, better params no more than 3. If more than 3 maybe should use hash or object.

Collapse
 
jcsvveiga profile image
João Veiga

How does it handle extra arguments? Does it ignore it or throw an exception?

Collapse
 
chenge profile image
chenge

ArgumentError