Публикации по теме 'solid-principles'


Принципы SOLID в JavaScript
Роберт С. Мартин создал набор рекомендаций по проектированию программного обеспечения, известных как принципы SOLID. Эти рекомендации помогают программистам создавать надежные, устойчивые к изменениям приложения, снижая при этом стоимость обновлений. В этой статье мы рассмотрим, как использовать эти принципы в JavaScript, и предоставим примеры кода, иллюстрирующие нашу точку зрения. Каковы принципы SOLID? Принцип единой ответственности Принцип открытия-закрытия Принцип..

Что такое ТВЕРДЫЕ ПРИНЦИПЫ ?
С примерами в этой статье мы легко поймем принципы SOLID. Давайте кратко представим солид для тех, кто никогда о нем не слышал. Сектор разработки программного обеспечения растет день ото дня, и коды, написанные в этом секторе, могут иметь самые разные структуры. Становится все труднее читать, понимать и развивать эти различные структуры. На данный момент Принципы SOLID буквально призваны облегчить жизнь разработчиков программного обеспечения. Объектно-ориентированное..

Как это решить
Когда я был начинающим программистом, я понял, наблюдая за более опытными людьми, что одним из самых важных навыков, которыми может обладать разработчик, является способность быстро решать проблемы. Но когда я спрашивал их, как им удалось решить такую-то проблему, они обычно долго вздыхали, а потом говорили мне: «Это просто из опыта…» Сейчас я нахожусь в ситуации, когда я наставляю начинающих разработчиков. Они задают мне тот же вопрос, и, по иронии судьбы, я ловлю себя на том, что..

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

Практический пример: рефакторинг проекта Java от начала до конца
Рефакторинг может оказаться непростой задачей, особенно когда вы работаете над большим и сложным проектом Java. Однако это необходимый процесс, который помогает улучшить структуру вашего кода, сохраняя при этом его функциональность. В этом сообщении блога представлен пример рефакторинга проекта Java от начала до конца. Введение Давайте рассмотрим проект, доставшийся нам в наследство — приложение для интернет-магазина книг. Несмотря на то, что он полнофункциональный и..

Вопросы по теме 'solid-principles'

Каков пример принципа единой ответственности?
Может ли кто-нибудь привести мне пример принципа единой ответственности? Я пытаюсь понять, что на практике означает, что класс несет единственную ответственность, поскольку боюсь, что, вероятно, нарушаю это правило каждый день.
32194 просмотров

Решает ли это нарушение квадратно-прямоугольной замены Лискова?
Я новичок в принципах проектирования SOLID. Одна вещь, с которой у меня возникли проблемы с пониманием, - это пример "квадрат-прямоугольник" нарушения принципа замены Лискова. Почему установщик высоты/ширины квадрата должен переопределять параметры...
2276 просмотров

принцип открыт-закрыт - рефакторинг для создания базового класса на основе новых функций
Поэтому, когда был написан исходный код, нужен был только, скажем, класс LabTest. Но теперь скажем, что у нас есть новые требования, чтобы добавить, например, RadiologyTest, EKGTest и т. Д. У этих классов много общего, поэтому имеет смысл иметь...
236 просмотров

Можно ли применить принцип разделения интерфейса к объектам Python?
В попытке применить принципы SOLID к проекту Python, который вырос органично и нуждается в рефакторинге, я пытаюсь понять, как работает разделение интерфейса Принцип можно применить к языку Python , когда интерфейсы не существуют как языковая...
2375 просмотров

Говорит ли Принцип Открытости/Закрытости, что мы не можем менять интерфейсы наших классов?
Посмотрите на этот класс, пожалуйста: public class SomeClass { public void method1(){ // do something } public void method2(){ // do something } } Далее представьте, что 10 классов наследуют этот класс. Итак, если мы добавим...
298 просмотров
schedule 01.05.2024

Принцип инверсии зависимостей внутри
Я читал о твердых принципах ООП ( Принцип инверсии зависимостей ) и не совсем понял, как это работает. Когда один класс явно знает о конструкции и реализации другого класса, изменения в одном классе повышают риск нарушения работы другого...
604 просмотров

Внедрение конструктора с двумя разными интерфейсами (Single Responsibility и Interface Segregation)
Я изучаю принципы SOLID. Сейчас я работаю с принципами внедрения зависимостей и разделения интерфейса. У меня уже есть основы этих двух, но когда я объединил их, я запутался. Вот моя реализация.. class Person { public Person(string name,...
324 просмотров

Нарушение провайдера
Я задал вопрос об использовании стратегии pattern и LSP, но ответы были неоднозначными, и в долгосрочной перспективе это не очень хорошая идея. Однако в комментарии внизу моего вопроса говорилось, что, хотя я не нарушаю LSP, я нарушаю Принцип...
537 просмотров

Как лучше проверить Enum и вызвать методы репозитория
У меня есть репозиторий, который получает IEnumerable разных типов. Я могу сделать это, используя: switch (returnType) { case ReturnType.HR: _repo.GetSystemManuals(); break; case ReturnType.Finance:...
356 просмотров
schedule 21.02.2024

Как внедрить класс поставщика в сервис?
У меня есть пример службы: <?php namespace AppBundle\Service; use AppBundle\Entity\Article; use CompanyName\Utils\ClassFromVendor; class DecorateArticle { private $customDecorator; private $article; public function...
602 просмотров
schedule 22.09.2022

Нарушил ли я принцип LSP в этом примере?
У меня есть этот код, который реализует 2 типа дверей. В одной двери есть замок, а в другой нет. Интерфейс Door прост: public interface Door { void open(); void close(); } Затем у меня есть реализации: LockedDoor и...
171 просмотров

Как реализовать паттерн Посетитель для подтипов абстрактного класса или интерфейса?
У меня возникла эта конкретная проблема, с которой я не мог разобраться с другими вопросами. Я пытаюсь реализовать посетителя для игры, посетитель - это класс Attack , и он должен искать в матрице ячейки, которые могут содержать Characters , затем,...
395 просмотров

Как преобразовать условные операторы в OCP (открытый и закрытый принцип) в SOLID?
У меня есть код, который выполняет различные проверки базы данных на основе переданного строкового значения. Я могу решить это с помощью нескольких условных операторов (if и else), и я точно знаю, что это нарушает принцип OCP в Solid, потому что он...
694 просмотров

Как использовать принцип Open/Closed для замены блока переключателя, который изменяет общее состояние
Я работаю над проектом, который требует от меня создания отчета на основе купленной аренды. Я должен вести подсчет для каждого типа аренды и суммировать соответствующие итоги. В настоящее время я использую блок переключателей, чтобы определить,...
121 просмотров

Нарушает ли шаблон декоратора принципы SOLID?
Допустим, у нас есть такой класс компонента: class Component: def operation(self) -> str: return f"Performing operation" def another_operation(self) -> str: return f"Performing another operation"...
69 просмотров

Нарушает ли Factory Pattern в js принцип Open-Close?
поскольку JS не поддерживает абстрактные классы или наследование, каждый раз, когда мы хотим добавить новый тип, который будет создан при использовании фабричного шаблона, нам придется модифицировать код, что означает, что мы нарушаем принцип...
82 просмотров