On Nov 3, 2:38   ﮮ
> Stefan Rusterholz wrote:
> > Mike Lopke wrote:
> >> I'm curious about everyone's take on Bob Martin's S.O.L.I.D. design
> >> principles. They seem to be getting a lot of traction with statically
> >> typed languages such as C# and Java but I haven't heard much buzz about
> >> it in the Ruby community.
>
> >> Any thoughts on how duck typing impacts the usefulness or necessity of
> >> these design principles? For instance, I don't really hear much
> >> regarding Liskov's Substitution Principle around Ruby programmers and am
> >> interested in opinions as to why.

I was a SOLID developer in my C# days, but I don't feel it applies as
well to dynamic languages like Ruby.

The S, I still agree with: single responsibility per class.

The O is something I'm on the fence about.  Ruby allows you to open
classes and modify them, and I've seen how valuable this is when you
know what you're doing.

The LID (substitution, inteface granularity, dependency injection) are
just non-issues for me with Ruby.  I enjoy duck-typing so much more
than worrying about interface granularities, and I don't need to use
dependency injection anymore (which I really only used to make things
more testable, which I can do with Mocha nowadays anyway).

I'd be interested in other viewpoints on this, but I think SOLID is
great advice only for statically-typed languages and isn't quite as
important with a language like Ruby.

For me, the SOLID equivalent would go like this:

Single Responsibility per Class
Drive your development with unit tests
Have fun

...but "SDH" isn't as easily pronounced as SOLID. :-)

Jeff

www.purpleworkshops.com