srp

Who's responsibility is it, anyway? A design question.

In the application I am writing I have a Policy class. There are 4 different types of Policy. Each Policy is weighted against the other Policies such that PolicyA > PolicyB > PolicyC > PolicyD. Who's responsibility is it to implement the logic to determine whether one Policy is greather than another? My initial thought is to overload...

Aren't Information Expert / Tell Don't Ask at odds with Single Responsibility Principle?

It is probably just me, which is why I'm asking the question. Information Expert, Tell Don't Ask, and SRP are often mentioned together as best practices. But I think they are at odds. Here is what I'm talking about: Code that favors SRP but violates Tell Don't Ask, Info Expert: Customer bob = ...; // TransferObjectFactory has to use Cu...

How do you define a Single Responsibility?

I know about "class having a single reason to change". Now, what is that exactly? Are there some smells/signs that could tell that class does not have a single responsibility? Or could the real answer hide in YAGNI and only refactor to a single responsibility the first time your class changes? ...

How to go from bad to good OOP design?

I'm reading a lot about good and bad practices in OOP design. It's nice to know your design is bad, or good. But how do you get from bad to good design? I've split the interface (xaml) and codebehind from the main businesslogic class. That last class is growing big. I've tried splitting it up into smaller classes, but I'm stuck now. Any...

How to use the single responsibility principle in large wcf services?

We're using about 7 services at the moment. There quite large. Does anyone have any experience with the single responsibility principle and WCF services? Does this mean that you'll end up with lot's of small contracts? If so, how do you manage these in your application? ...

Implementation question on Single Responsibility Principle

If I break my Objects down to 'Single Responsibilities', is there a fundamental thought whether like objects should live together or separately, for example if I have class Employee_DataProvider() : IEmployee_DataProvider { ... }; class Employee_Details() : IEmployee_Details { ... }; class Employee_Payroll() : IPayroll() { ... }; class ...

Using the Single Responsibility Principle in the "real world"

I basically want to get an idea of the percentage of people who think it's reasonable to use the Single Responsibility Principle in real-world code and how many actually do. In Podcast #38 Joel talks about how useless this OOP principle is the real world; and further that this demonstrates how people like Uncle Bob have likely not writt...

Making a class follow OCP - Factoring functions into objects

I have a class to which I'm constantly adding to. public class OrderRepository{ public void Add(IEnumerable<Order> orders){} public void Update(IEnumerable<Order> orders){} public void Remove(IEnumerable<Order> orders){} public void Expedite(IEnumerable<Order> orders){} public void GetOrderData(Order order, DateTime...

Determining Class Responsibility and Collaborators

I'm using ActiveRecord to maintain information about users. The User class has the expected load(), insert(), update(), and delete() methods, setters, getters, and a few others. But I am having trouble deciding whether or not certain other methods should be included in the User class, or handled by collaborators. Here's an example: The...

Static factory on business object a violation of Single Responsibility Principle?

Am I violating the Single Responsibility Principle (SRP) if I put "data access" methods on the business object? My gut feeling is the API feels more user friendly if the Load method is present on the class itself rather than having to guess which class the method happens to be in? Example: public class Image { public static Ima...

When do you violate SRP (Single Reponsibility Principle)?

SRP(PDF version; HTML version) states that There should never be more than one reason for a class to change When you take a look at Outlook, Calendar Event window, it has "Save and Close" button. So when the functionalities of either or both Save or Close changes, that button should change. It obviously violates SRP. This func...

Typecast or convert method?

I have a container class with parameters which come from different kinds of configuration files (text or xml for example). So I made a class for textConfigurationFiles and a class for xmlConfigurationFiles (I think I will implement an interface IConfigFile for this later). The initialisation of my container class looks like the followi...

What does the single responsibility principle mean for validation

Does the single responsibility principle mean that your validation rules should be external to the entity? If so do you use one class per validation rule? ...

ASP.NET MVC: Authorization inside an Action - Suggested Patterns or this is a smell?

Hello, I have an ASP.NET MVC application using Authorization Attributes on Controllers and Actions. This has been working well but a new wrinkle has shown up. Object: Shipment Roles: Shipping, Accounting, General User The Shipment moves through a workflow. In state A it can be edited by Shipping only. In state B it can be edited b...

Single Responsibility Principle: Should I separate my bibliography class in Reader, Writer and Container class?

Hello SO-Followers, cowboy coder needs some help from SO-veterans: I have a given application that uses a bibliography which is read from a file (in reality, it can be different files but let's assume a single file only). I build a new application that should use the bibliography the same way than the application so I copied the accor...

Single Responsibility Principle: do all public methods in a class have to use all class dependencies?

Say I have a class that looks like the following: internal class SomeClass { IDependency _someDependency; ... internal string SomeFunctionality_MakesUseofIDependency() { ... } } And then I want to add functionality that is related but makes use of a different dependency to achieve its purpose. Perhaps someth...

Confused about Single Responsibility Principle in the following example

In the following video, the author takes an existing class and assigns the Single Responsibility Principle to it. He takes a Print Class that has the job of Accessing Data, Formatting, and Printing the report. He breaks up each method to its own class, so he creates a DataAccess class to handle data access, he creates a ReportFormatter...

What is your best example of a violation of the Single Responsibility Principle?

I'm looking for some good examples of code that violates the Single Responsibility Principle. Don't show me any examples from Uncle Bob's books or web sites since those are plastered all over the internet, like this one: interface Modem { public void dial(String pno); public void hangup(); public void send(char c); publ...

Is this a violation of the single responsiblity principle?

I have the following method and interface: public object ProcessRules(List<IRule> rules) { foreach(IRule rule in rules) { if(EvaluateExpression(rule.Exp) == true) return rule.Result; } //Some error handling here for not hitting any rules } public interface IRule { Expression Exp; Object Result; int ...

What is a good way to show the relationship between loosely coupled classes and interfaces?

I have introduced the SOLID principles to my team and they understand and are excited about using the principles. S - SRP - Single Responsibility Principle O - OCP - Open/Closed Principle L - LSP - Liskov Substitution Principle I - ISP - Interface Segregation Principle D - DIP - Dependency Inversion Principle I have given them a coup...