From Arthur, 7 Months ago, written in Java.
This paste will slip away in 3 Months.
This paste is a reply to Re: SRP from Arthur
- go back
Embed
Viewing differences between Re: SRP and Re: 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);
    }
}