Roger Alsing wrote:
>> class Test
>>     attr_accessor :order
>> 
>>     def order=(order)
>>       if order.kind_of?(Giraffe)
>>         raise Exception.new("We package nearly everything, but
>> Giraffes????")
>>       end
>>     end
>> end
>> 
> 
> So is it common practise to do it like this?

I wouldn't really say it's "common practice" in Ruby to do a bunch of
kind_of? parameter checks; I haven't seen it very often, and if it were
the "desirable" thing for a Rubyist to do, the language would do it for
you. As you say, this way adds extra steps just to check some stuff that
only ultimately has the result of increasing the coupling of your code.

Instead, look at it like this: how likely is a Giraffe able to do what
an Order does? If the Giraffe doesn't quack like an Order, than an
exception is going to be thrown automatically anyway.

Just program in it, and see how often it ever actually bites you. Start
with small things, work your way up. Read other people's code from time
to time. I myself am from a C# background, and probably I really still
think that way, but I do like Ruby a lot and I find it fun to use even
though my Ruby code doesn't look as "Ruby" as many of the people's here.

And do keep in mind that Ruby makes some things quite simple that can be
more of a pain to do in C# -- anything involving string manipulation and
regular expressions, for example. And the built-in arrays and hashes
have a ton of functionality and make stuff really succinct (and gets you
away from having to use long nested List<Dictionary<string, Blah>>
stuff, or having to cast all the time with ArrayLists, or whatever). The
language reads well and makes you jump through minimal hoops; the code
you write tends to be shorter and thus easier to digest. It has an
interactive mode that's really neat, and you can even use it to check
out what methods a given object makes available. The "standard library"
is rich and has a ton of stuff built in. And there's a lot of
high-quality, free libraries and tools out there that other people have 
done.

Where C# trumps it, in my opinion, is in having a ridiculously awesome
IDE integrated with it, and in super easy GUI building capabilities.
(There are other more obvious differences, like performance vs.
cross-platform capabilities.) There are of course Ruby IDEs (including
the SapphireSteel Visual Studio thing or whatever that has Intellisense;
I'm sure the guy will be happy to plug it) and you can of course build
GUIs in Ruby, but again, it's not about what a language can DO, it's
about what it makes easy.

So again, just give it a whirl. Outside of whatever your work uses,
there's no one forcing you to use one language or another. Try them out,
keep an open mind, and go with what feels good.
-- 
Posted via http://www.ruby-forum.com/.