From Chunky Bird, 7 Months ago, written in Java.
This paste will self destruct in 3 Months.
This paste is a reply to SRP from Unreliable Kangaroo
- go back
Embed
Viewing differences between SRP and Re: SRP
class User
{
    void CreatePost(Database db, string postMessage)
    {
        try
        {
            db.Add(postMessage);
        }
        catch (Exception ex)
        {
            db.LogError("An error occured: ", ex.ToString());
            File.WriteAllText("\LocalErrors.txt", ex.ToString());
        }
    }
}

This violates the single responsibility principle as the Createpost() method has too much responsibility. It can create a new post, log errors in the database and log an error in a local file.










We can solve this by abstracting the functionality that handles the error logging and breaks them up into two classes, Post and ErrorLogger so that they each only handles one specific task. The post class only create post and the the ErrorLogger class only handles error logging.  
class Post
{
    private ErrorLogger errorLogger = new ErrorLogger();

    void CreatePost(Database db, string postMessage)
    {
        try
        {
            db.Add(postMessage);
        }
        catch (Exception ex)
        {
            errorLogger.log(ex.ToString())
        }
    }
}

class ErrorLogger
{
    void log(string error)
    {
      db.LogError("An error occured: ", error);
      File.WriteAllText("\LocalErrors.txt", error);
    }
}