"Ожидается, что программное обеспечение будет модульным, удобным в использовании, обслуживаемым и отвечающим требованиям".
SOLID - это аббревиатура, обозначающая пять ключевых принципов проектирования: принцип единой ответственности, принцип "открыто-закрыто", принцип замещения Лискова, принцип разделения интерфейсов и принцип инверсии зависимостей.
Принцип единой ответственности (SRP) - класс должен иметь только одну ответственность и только одну причину для изменений. Соберите/определите изменения, чтобы разделить ответственность, т.е. разделите вещи по разным причинам и сгруппируйте вещи по одной причине.
Некоторые симптомы нарушения SPR:
Принцип открытости-закрытости (OCP) - Открыт для расширения, но закрыт для модификации. Возможность расширить поведение без изменения существующего кода. Например: использование интерфейса.
Некоторые симптомы нарушения OCP:
Принцип подстановки Лискова (LSP) - если для каждого объекта o1 типа S существует объект o2 типа T такой, что для всех программ P, определенных в терминах T, поведение P не изменяется при замене o1 на o2, то S является подтипом T - Барбара Лисков. : ).
Т.е. экземпляры производного класса должны использоваться через интерфейсы его базового класса без того, чтобы объекты базового класса могли различать различия. Это может быть достигнуто путем разделения кода в отдельных интерфейсах таким образом, чтобы он следовал LSP. По сути, это помогает создать хорошую структуру наследования.
Некоторые симптомы нарушения LSP:
Принцип разделения интерфейсов (ISP) - Объекты не должны быть вынуждены реализовывать интерфейс, который они не используют. Вместо одного большого интерфейса он должен состоять из более мелких интерфейсов, основанных на группах методов, каждый из которых обслуживает один подмодуль. Т.е. при создании объекта интерфейса не должно быть неиспользуемого метода.
Некоторые симптомы нарушения ISP:
Принцип инверсии зависимостей (DIP) - политика высокого уровня не должна зависеть от деталей низкого уровня. Зависит от абстракции/интерфейса, а не от конкретных классов.
Некоторые симптомы нарушения DIP:
"Любой дурак может написать код, понятный компьютеру, но хорошие программисты пишут код, понятный людям". - Мартин Фаулер.
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.