I like having the options of using the syntax sugar (when appropriate)
of returning and with_options.  I totally agree that the framework can
do without due these idioms due to performance requirements but as an
app developer I'd like the option where cleanliness/beauty is valued
more than a small speedup.

Zack

On 9/4/07, Stephen Caudill <[EMAIL PROTECTED]> wrote:
> Fixed this in r511.
>
> I still think there's a time and a place for that pattern.  It's not
> magical and it follows a clear precedent in good OO design.  It is
> decidedly *not* as performant as it's sometimes longer handed
> counterpart, but Ruby is a language in which the value of being
> succinct is frequently more important than being very fast.  I'd
> rather not sacrifice a bit of beauty in my code for a few
> milliseconds parsing difference, since most of the overhead occurs in
> method dispatch.
>
> just my 2ยข
>
> --
>
> Stephen Caudill (voxdolo)
>
> On Sep 4, 2007, at 4:46 PM, Brian Candler wrote:
>
> > The following construct is an ActiveSupport-ism:
> >
> >   returning(Foo.new) do |foo|
> >     ...
> >   end
> >
> > I don't especially like it, since it's both more verbose and less
> > efficient
> > than the direct alternative:
> >
> >   foo = Foo.new
> >   ...
> >   foo
> >
> > It doesn't occur many times in Merb, so does anyone agree with me
> > that it
> > should be removed?
> >
> > I tried doing this (patch attached) and I find the code more readable
> > without. For example, in lib/merb/mixins/responder.rb
> >
> > Before:
> >
> >         def <=>(entry)
> >           returning((entry.quality <=> quality).to_s) do |c|
> >             c.replace((index <=> entry.index).to_s) if c == '0'
> >           end.to_i
> >         end
> >
> > After:
> >
> >         def <=>(entry)
> >           c = (entry.quality <=> quality).to_s
> >           c.replace((index <=> entry.index).to_s) if c == '0'
> >           c.to_i
> >         end
> >
> > This second form also more clearly begs the question, why is the
> > result from
> > <=> being converted to string and then back to integer? I don't
> > know the
> > answer to that :-)
> >
> > I believe the attached patch is OK - it doesn't break any specs. It
> > doesn't
> > remove the definition of Object#returning itself, or its spec.
> >
> > Regards,
> >
> > Brian.
> > <merb-returning.diff>
> > _______________________________________________
> > Merb-devel mailing list
> > Merb-devel@rubyforge.org
> > http://rubyforge.org/mailman/listinfo/merb-devel
>
> _______________________________________________
> Merb-devel mailing list
> Merb-devel@rubyforge.org
> http://rubyforge.org/mailman/listinfo/merb-devel
>
_______________________________________________
Merb-devel mailing list
Merb-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/merb-devel

Reply via email to