Yohanes Santoso wrote: >Joe Van Dyk <joevandyk / gmail.com> writes: > > > >>Generally people save do .. end for multiline stuff. Don't think >> >> > >I am not sure why Pickaxe mentioned this convention that is based >on LOC factor rather than one that is based on intent. > >Basing it on LOC is silly, IMO. It really is more suitable for >languages that are white-space sensitive. > >Consider you wrote: > >foo.bar {|a| zoo(a)} > >Oh, further down the road you realise that it is valuable to log the >value of a or perhaps you are simply reformatting your code. > >foo.bar {|a| > log.debug(a) > zoo(a) >} > >Whoops, that's out of the convention. Your eyes are itchy at that, so >you spent some time fixing it like: > >foo.bar do |a| > log.debug(a) > zoo(a) >end > >Later on, you decided that logging the value of a is frivolous, so you >changed it again: > > >foo.bar do |a| zoo(a) end > >That violates the convention as well, so you do yet another do-end to >{} transformation > >foo.bar {|a| zoo(a)} > >All that works is just for one method call. Imagine if there are more, >and there are likely to be more. > >Basing it on intent (return value or side-effect or what-have-you) >seems a more rational guideline. For certain, that would make code >reformatting a more pleasurable exercise. > > >YS. > > > > > > In the end doesn't it all come up to a matter of preference? I prefer the curly braces, others prefer do..end. In my book its a matter of versatility of the language. Which in turn is a verry nice feature, IMHO. Daniel C.