I like this multi-line nested format, that I call stanza (you know,
like in poetry)
songs.append Song.new(
title,
name,
duration = ( mins.to_i * 60 + secs.to_i )
)
It clearly shows you what you are appending as a chunk of code on the
right. the 'duration =' idiom makes the intent explicit. I use
brackets to nest conceptual entities (Song, duration), so that they
stand out as visually striking.
Sometimes, using metaprogramming I also get rid of the explicit new by
wrapping up object instantiation with a Song(..) method on the top
level. I use this Implicit Constructor because I don't want to be
concerned with object creation in my code, just with the meaning of
the entities that I am manipulating.
songs.append Song(
title,
name,
duration = ( mins.to_i * 60 + secs.to_i )
)
--
Chiaroscuro
---
Liquid Development: http://liquiddevelopment.blogspot.com/
On 4/5/06, Keith Sader <ksader / gmail.com> wrote:
> IMO your second version is better since the intent is clear. IMO,
> make the intent clear at the expense of concision.
>
> However, do what works best for you and your team.
>
> On 4/5/06, Jean-Charles Carelli <jnchrls / flashcodersny.org> wrote:
> > I'm working my way through the Pickaxe book and I have a question
> > regarding syntax and best practices.
> >
> > Example from page 64
> >
> > # 1 Book example
> > songs.append(Song.new(title, name, mins.to_i * 60 + secs.to_i))
> >
> >
> > # 2 Alternate version.
> > duration = mins.to_i * 60 + secs.to_i
> > songs.append(Song.new(title, name, duration))
> >
> >
> > Version 1 is very concise but harder to read. Ruby is very intuitive
> > but I find the second example easier to read. What is everyone else
> > doing?