Принцип единственной ответственности или Single Responsibility Principle (SRP). Пожалуй, этот принцип является одним из самых важных принципов в программировании, который достаточно просто использовать на практике. 


Применение этого принципа может значительно сэкономить время при расширении приложения. 

Нужно понимать, что как и остальные принципы, если вы не будете придерживаться его, это не означает, что ваше приложение не будет работать. Это означает то, что ваше приложение будет сложнее расширять, добавлять туда новые возможности и.т.д. 

Давайте разбираться в чем заключается этот принцип и его идея.

Идея проста. У каждого объекта или функции, которые есть в вашей программе, должна быть одна единственная ответственность. Казалось бы, все просто, но на практике не все так просто, как кажется на словах. Вроде бы все просто, создаем какой-то метод и он делает какую-то одну ответственность. Но, тема философская и в некоторых ситуациях все не так однозначно.

Проблема в том, что сложно определить границы этой ответственности. Все как в жизни. Какому объекту какую ответственность добавить бывает достаточно сложно. Как и в жизни мало кто хочет брать на себя лишнюю ответственность, также и в программировании. Сложно определить кто какую ответственность будет нести. 

По этому принципу достаточно много материалов. Я бы хотел рассказать свое мнение по этому вопросу. 

Давайте подумаем, что же такое ответственность. 

Ответственность не равно одному действию. Если какой-то функции или объекту было назначена какая-то ответственность, это не означает, что он должен делать какое-то одно действие. Действий может быть много, но функция должна выполнять какую-то одну ответственность.

См. видео, чтобы посмотреть несколько примеров.

Ответственность - это действие или набор действий, которые приводят к какой-то задуманной цели. Причине, ради которой эта функция создавалась. 

Каждый объект или функция создаются ради какой-то причины, чтобы решить какую-то конкретную задачу. В рамках одной ответственности не должно решаться несколько задач. 

Посмотрите видео, чтобы увидеть пример из моей практики, где был нарушен этот принцип. 

Принцип единственной ответственности дает нам модульный подход к разработке нашего приложения. У каждого модуля своя ответственность. И мы можем как конструктор собирать из наших модулей наше приложение. Вот такая идея этого принципа.