Принцип единственной ответственности

171
20 июля 2021, 19:20

Первый принцип SOLID гласит что каждый класс выполняет лишь одну задачу. Я понимаю это так. Например есть у нас класс для работы с базой данных. В этот класс входят функции по отправке значений с ответом и без, для получения данных и т.д. И значит этот класс должен работать только с бд. А если мы добавим к примеру функцию парсинга из txt файла то это уже не соблюдение принципа. Я правильно понимаю?

Answer 1

Теоретически все так, но задачи бывают разные. Сначала проектируется все правильно, с разделением функций и уровней. А потом оказывается, что для решения задачи разные уровни должны иметь доступ к данным других уровней. И начинается либо перепроектирование, либо построение костылей.

Answer 2

Если класс работает с базой данных, то по принципу единственной ответственности он ничего другого делать не должен. Пусть с БД работает один класс, а с файлами - другой. Если их действия похожи (ну там сохранение, чтение, удаление данных), можете сделать интерфейс и реализовать его в этих классах. Также не поддавайтесь соблазну делать в вашем классе функции с какими-то дополнительными проверками, иначе он сильно разрастется и будет не круто. Эти проверки должны быть уровнем выше, там, где вы этот класс используете (а не внутри него).

READ ALSO
Вылеты из игры на всех телефонах Unity/Ui

Вылеты из игры на всех телефонах Unity/Ui

Проблема заключается в том, что программа вылетает на всех телефонах при переходе в меню выбора уровняИзначально меню неактивно и выглядит...

249
Проблема с нахождением элементов Namespace

Проблема с нахождением элементов Namespace

Есть некий xml с пространством имёнИз него я пробую выбрать тэги следующим образом:

207
Не корректно переключается язык в мультиязычном приложение (WinForms)

Не корректно переключается язык в мультиязычном приложение (WinForms)

Сделал приложение которые переключается на другие языки программно на лету, но не корректно переключается, нажимаю на одну кнопку переключается...

216