Modelling roles and responsibilities

Hi,

reading “Growing Object-Oriented Software, guided by tests”, I came
across the distinction of class, role and responsibility.

While classes are classes and responsibilities could be mapped to public
methods, I wonder how to specify roles in my specs. Does anyone have
experiences with this?

cheers,

Nikolay


“It’s all part of my Can’t-Do approach to life.” Wally

On Dec 6, 2011, at 2:30 PM, Nikolay Sturm wrote:

Nikolay

https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples

  • David C. [2011-12-07]:

https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples

Sorry, but I don’t see how that helps. In my understanding, roles are a
set of related responsibilities. If responsibilities map roughly to
public methods, than a role should be a subset of a class’ API. I don’t
see where I should want to share example groups.

cheers,

Nikolay


“It’s all part of my Can’t-Do approach to life.” Wally

On Dec 7, 2011, at 1:57 AM, Nikolay Sturm wrote:

Nikolay

https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples

Sorry, but I don’t see how that helps. In my understanding, roles are a
set of related responsibilities. If responsibilities map roughly to
public methods, than a role should be a subset of a class’ API. I don’t
see where I should want to share example groups.

You can use shared example groups to test a subset of a class’s API.

Pat

  • David C. [2011-12-07]:

Nikolay - just because they’re shareable doesn’t mean they have to be
shared :slight_smile: As Pat suggests, you can use them to specify a subset of a
single object’s API. That said, one goal of thinking of roles is code
that is easy to extend thanks to polymorphism. You might have onlly
one class that satisfies a role now, but you might add another later.
Shared examples allow you to just drop in a spec for that part of the
new object’s responsibilities.

Ah great, the missing pieces! I hadn’t thought about polymorphism and
roles. This finally makes sense. :slight_smile:

cheers everyone,

Nikolay


“It’s all part of my Can’t-Do approach to life.” Wally

On Dec 7, 2011, at 4:07 AM, Pat M. wrote:

cheers,
You can use shared example groups to test a subset of a class’s API.
Nikolay - just because they’re shareable doesn’t mean they have to be
shared :slight_smile: As Pat suggests, you can use them to specify a subset of a
single object’s API. That said, one goal of thinking of roles is code
that is easy to extend thanks to polymorphism. You might have onlly one
class that satisfies a role now, but you might add another later. Shared
examples allow you to just drop in a spec for that part of the new
object’s responsibilities.

I blogged about this a while back:
http://blog.davidchelimsky.net/2010/11/07/specifying-mixins-with-shared-example-groups-in-rspec-2/

  • the focus of that entry is on Modules, but you could just as easily
    think in terms of roles (since a Module often represents a role). The
    stuff about spec’ing the what happens when you include the module
    doesn’t really apply, but the stuff about spec’ing similar behavior
    across different objects does.

HTH,
David

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs