On Sun, Dec 16, 2012 at 3:22 AM, tamouse mailing lists
<[email protected]> wrote:
> if you object to long parameter lists, consider passing a hash.
> This may still have a lot of code on the calling side, but it
> is at least rather more understandable vs. just passing
> in values.
>
> a = A.new({
> :option1 => 'Something',
> :option2 => 'or'
> :option3 => 'other'
> })
Curly brackets are superfluous here. And you can use the new Syntax in 1.9:
a = A.new(
option1: 'Something',
option2: 'or',
option3: 'other'
)
> then the method definition is
>
> def initialize(options = {})
>
> # ... code
>
> end
>
> This form is used all over the place, all the time.
I don't like that too much because what seems to be a good idea in the
beginning can come back later to haunt you. Stuffing everything in a
Hash just to avoid longer parameter lists is worthless without
documenting which keys the class expects. But if you write the
documentation you can as well also use proper arguments. This is
really only a good solution if a lot of arguments are optional. If
not, I'd prefer a proper argument list because the caller must provide
them anyway.
Kind regards
robert
--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/
-- You received this message because you are subscribed to the Google Groups
ruby-talk-google group. To post to this group, send email to
[email protected]. To unsubscribe from this group, send email
to [email protected]. For more options, visit this
group at https://groups.google.com/d/forum/ruby-talk-google?hl=en