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

  • 5 принципов SOLID
  • Пояснение SRP
  • Примеры
  • Заключение

5 принципов SOLID

Одной из самых сложных задач для тех, кто занимается разработкой программного обеспечения, может быть выяснение того, что делает существующий код. Чтение спагетти-кода отнимает много времени и может стоить вам много нервов и денег. Но что, если вы сможете легко понять код, взглянув на структуру и имена классов и методов? Что, если каждый код, который вам нужно прочитать или написать, имеет одинаковую структуру и его легко понять, даже если у вас нет опыта? Лучшее решение, убедитесь, что ваш код не превратится в спагетти-код, — это продолжать использовать пять принципов SOLID.

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

Объяснение Принцип единой ответственности

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

В C# SRP можно реализовать, создав классы, имеющие одну четко определенную цель и только одну причину для изменения. Это помогает уменьшить сложность кода и упростить его понимание и поддержку.

Один из способов применения SRP в C# — гарантировать, что каждый класс имеет одну четко определенную ответственность. Например, класс, отвечающий за извлечение данных из базы данных, не должен также отвечать за отображение этих данных пользователю. Вместо этого эти обязанности должны быть разделены на два разных класса: класс извлечения данных отвечает за извлечение данных, а класс отображения отвечает за их отображение.

Еще один способ применить SRP в C# — убедиться, что каждый класс имеет узко определенный набор сервисов. Это означает, что класс должен иметь только те методы и свойства, которые необходимы для выполнения его определенной ответственности. Наличие большого количества ненужных методов и свойств может затруднить понимание и поддержку класса.

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

Примеры

Пример 1

Рассмотрим класс Employee, который отвечает за хранение и извлечение данных о сотрудниках из базы данных. Этот класс нарушил бы принцип единой ответственности, если бы он также включал метод отображения данных о сотрудниках для пользователя, поскольку это выходит за рамки его определенной ответственности за хранение и извлечение данных. Вместо этого эту функциональность следует выделить в отдельный класс, например класс DisplayEmployee.

Чтобы следовать принципу единой ответственности, метод Display следует удалить из класса Employee и поместить в отдельный класс DisplayEmployee:

Пример 2

Рассмотрим класс Product, отвечающий за хранение и получение данных о продуктах из базы данных. Этот класс нарушил бы принцип единственной ответственности, если бы он также включал методы расчета скидок, поскольку это выходит за рамки его определенной ответственности за хранение и извлечение данных. Вместо этого эту функциональность следует выделить в отдельный класс, например класс DiscountCalculator.

Чтобы следовать принципу единой ответственности, методы расчета скидок должны быть удалены из класса Product и помещены в отдельный класс DiscountCalculator:

Заключение

Использование SRP заставляет вас кодировать:

  • Многократное использование
  • Понятно
  • Рефакторинг
  • Подходит для тестирования

Проще говоря, использование SRP не приносит ничего, кроме преимуществ, и ему должен следовать каждый, кто занимается профессиональной разработкой программного обеспечения.

Большое спасибо за чтение, и если вам понравилась эта статья, пожалуйста, следуйте за мной.

Пожалуйста, ознакомьтесь с другими моими статьями: