I am learning all I can about the solid principles. Currently I am
reading about the Single Responsibility Principle (A class should have
only one reason to change). If a class has more than one
responsibility, the responsibilities become coupled. This kind of
coupling leads to fragile designs that beak in unexpected ways when
changed according to Bob Martin. An example I have seen lately is the
case of the widget.com public site and the widget.com customer site
having the exact same code base except for the part code that deals
specifically with customer service. The team debated whether the
customer service code should be pulled out of the customer service
site and placed into the public site so that two almost exact code
repositories needing to be maintained. There was disagreement among
the team. Some felt this would be efficient others felt that this was
breaking SRP. Others thought combining the code together violates the
DRY principle. What do you think?