[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Ruby good-practice

Justin To

6/30/2008 10:20:00 PM

Hi, I'm fairly new to Ruby (3 weeks) and I always find my code for my
little projects to be awefully cluttered and excessive. Also, I'm never
sure when to use what. I'm sure a lot of this comes with practice and
experience, but it would be nice if someone could give me some general
pointers for good-practice or link me to a site that already has some
tips. I don't want to get too deep into my bad practices and habits. =)

Here's just a sample off the top of my head:
1) What's the stance on global variables? When to use them, if at all?
2) Two arrays that have related info. (i.e. a[0] relates to b[0]) or one
hash?
3) If I'm storing data and know I need to collect statistics on that
data,
should I store everything and then iterate through them to capture
stats. or
store and collect simultaneously?
etc....

I guess what I'm looking for is what's common practice out there in the
professional world. Sometimes I write 100 lines of code and find someone
else implemented the same thing in 3 lines. =(

Anyway, anything would help! THANKS!
--
Posted via http://www.ruby-....

4 Answers

Iñaki Baz Castillo

6/30/2008 10:31:00 PM

0

El Martes, 1 de Julio de 2008, Justin To escribi=C3=B3:

> 1) What's the stance on global variables? When to use them, if at all?

AFAIK try not using them (except if they are really needed).


> 2) Two arrays that have related info. (i.e. a[0] relates to b[0]) or one
> hash?

A Hash, of course (IMHO).


Regards.




=2D-=20
I=C3=B1aki Baz Castillo

Suraj Kurapati

6/30/2008 10:46:00 PM

0

Iñaki Baz Castillo wrote:
> El Martes, 1 de Julio de 2008, Justin To escribió:
>
>> 1) What's the stance on global variables? When to use them, if at all?
>
> AFAIK try not using them (except if they are really needed).

Agreed. Prefer constants, class variables, then global variables, in
that order.

>> 2) Two arrays that have related info. (i.e. a[0] relates to b[0]) or one
>> hash?
>
> A Hash, of course (IMHO).

If the problem domain prefers arrays, you can iterate them using
Array#zip:

a.zip(b).each {|ai,bi| ... } # ai is a[i], bi is b[i], where i = 0 to
max(a,b)

Always use data structures that best suit the problem domain, IMHO.
--
Posted via http://www.ruby-....

Justin To

6/30/2008 11:23:00 PM

0

Thanks, very helpful. How about using 'begin...rescue...ensure...end'.
Should I use this everywhere in my code and for every program I do? Or
is this only for debugging?

--
Posted via http://www.ruby-....

Iñaki Baz Castillo

6/30/2008 11:43:00 PM

0

El Martes, 1 de Julio de 2008, Justin To escribi=C3=B3:
> Thanks, very helpful. How about using 'begin...rescue...ensure...end'.
> Should I use this everywhere in my code and for every program I do? Or
> is this only for debugging?

Some methods don't return "false" when they fail (for example read IO class=
).=20
But they generate exceptions (different exceptions for each kind of failure=
).

=46or example, if you are handling a TCP connection and try to send a messa=
ge,=20
if it fails you'd like to know the cause:
- TCP connection closed.
- ICMP error.
- ...

Maybe TCPSocket#puts method return a different exception in case of failure=
=20
for the above cases (is just an example), and this info can be very useful=
=20
for you.

So, sometimes is more useful to match exceptions instead of getting the ret=
urn=20
value of a method.

Regards.

=2D-=20
I=C3=B1aki Baz Castillo