Tell me more ×  The Single Responsibility Principle states that
a class should do one and only one thing. Some cases are pretty
clear cut. Others, though, are difficult because what looks like
"one thing" when viewed at a given level of abstraction may be
multiple things when viewed at a lower level. I also fear that
if the Single Responsibility Principle is honored at the lower
levels, excessively decoupled, verbose ravioli code, where more
lines are spent creating tiny classes for everything and
plumbing information around than actually solving the problem at
hand, can result.  How would you describe what "one thing"
means? What are some concrete signs that a class really does
more than "one thing"?  share|improve this question +1 for over
the top "ravioli code". Early on in my career I was one of those
people who took it too far. Not just with classes, but with
method modularization too. My code was peppered with tons of
little methods that did something simple, just for the sake of
breaking up a problem i