[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

how do you know which class pars belong to?

Leonardo Francalanci

4/18/2005 9:24:00 AM

Hello,

I've found Ruby very interesting. I like it, but coming from a Java
background I'm having some problems when it comes to parameters and
function return values. When I program in Java, I just have a look at
the method definition and I know what classes I have to pass to the
method and what class the method will return. And, if I write something
wrong, the compiler will warn me. Now: how do you do it in Ruby? Do you
use a special notation to understand what classes are to be passed to
methods? And: when the parameters of a method change (in number and/or
type), how do you change the calling code accordingly?

Example:

def mymethod(customer, vendor)
<some code here>
end

What class do customer and vendor belong? To Customer and Vendor? Or to
Person? Or are they just strings?
What are the ruturn types?

And when you change the code to:

def mymethod(customer, vendor, times)
<some code here>
end

do you use "grep" (or any other IDE command) to find all the calling
code to change it?

Hope this post doesn't end in a flame "java vs ruby". I just want to
understand how people deal with this things, so that I can get the best
out of Ruby.





2 Answers

Robert Klemme

4/18/2005 9:43:00 AM

0


"Leonardo Francalanci" <lfrancalanci@simtel.it> schrieb im Newsbeitrag
news:42637B81.8080004@simtel.it...
> Hello,
>
> I've found Ruby very interesting. I like it, but coming from a Java
> background I'm having some problems when it comes to parameters and
> function return values. When I program in Java, I just have a look at
> the method definition and I know what classes I have to pass to the
> method and what class the method will return. And, if I write something
> wrong, the compiler will warn me. Now: how do you do it in Ruby? Do you
> use a special notation to understand what classes are to be passed to
> methods? And: when the parameters of a method change (in number and/or
> type), how do you change the calling code accordingly?
>
> Example:
>
> def mymethod(customer, vendor)
> <some code here>
> end
>
> What class do customer and vendor belong? To Customer and Vendor? Or to
> Person? Or are they just strings?

Well, types are not that important in Ruby. When we talk about "Duck
Typing" then we mean, that we pass some value and if it doesn't respond to
the messages that the method wants to send them we'll see that pretty
quickly. This works surprisingly good (surprising for people with a
static typing languages background).

> What are the ruturn types?

That's where documentation comes into play. :-)

> And when you change the code to:
>
> def mymethod(customer, vendor, times)
> <some code here>
> end
>
> do you use "grep" (or any other IDE command) to find all the calling
> code to change it?

That's one option. The other is to use tests extensively. If test
coverage is good (i.e. near 100%) then you will immediately notice all
places where this method is called. Or you use a default value for the
added parameter(s).

Kind regards

robert

Brian Schröder

4/18/2005 9:45:00 AM

0

> On 4/18/05, Leonardo Francalanci <lfrancalanci@simtel.it> wrote:> Hello,> > I've found Ruby very interesting. I like it, but coming from a Java> background I'm having some problems when it comes to parameters and> function return values. When I program in Java, I just have a look at> the method definition and I know what classes I have to pass to the> method and what class the method will return. And, if I write something> wrong, the compiler will warn me. Now: how do you do it in Ruby? Do you> use a special notation to understand what classes are to be passed to> methods? And: when the parameters of a method change (in number and/or> type), how do you change the calling code accordingly?> > Example:> > def mymethod(customer, vendor)> <some code here>> end>
Use good methodnames, document the method and use rdoc on your source files# Adds a new entry to the "customer kills vendor" relationship. ## customer and vendor should respond to persons_id.def customer_killed_vendor(customer, vendor) insert_into('customer_kills_vendor', customer.persons_id, vendor.persons_id)end
Then use unit tests to test your sourcecode.
> What class do customer and vendor belong? To Customer and Vendor? Or to> Person? Or are they just strings?> What are the ruturn types?> > And when you change the code to:> > def mymethod(customer, vendor, times)> <some code here>> end> > do you use "grep" (or any other IDE command) to find all the calling> code to change it?
there are some refactoring tools available, but grep seems nice. Inyour example I'd use a default value:def mymethod(customer, vendor, times=1) <some code here>end
as it seems your expanding the method call to add some behaviour.
Just my 0.02?
regards,
Brian Schröder
-- Brian Schröderhttp://ruby.brian-sch...