Публикации по теме 'solid-principles'
Принципы SOLID в JavaScript
Роберт С. Мартин создал набор рекомендаций по проектированию программного обеспечения, известных как принципы SOLID. Эти рекомендации помогают программистам создавать надежные, устойчивые к изменениям приложения, снижая при этом стоимость обновлений. В этой статье мы рассмотрим, как использовать эти принципы в JavaScript, и предоставим примеры кода, иллюстрирующие нашу точку зрения.
Каковы принципы SOLID?
Принцип единой ответственности Принцип открытия-закрытия Принцип..
Что такое ТВЕРДЫЕ ПРИНЦИПЫ ?
С примерами в этой статье мы легко поймем принципы SOLID.
Давайте кратко представим солид для тех, кто никогда о нем не слышал.
Сектор разработки программного обеспечения растет день ото дня, и коды, написанные в этом секторе, могут иметь самые разные структуры. Становится все труднее читать, понимать и развивать эти различные структуры. На данный момент Принципы SOLID буквально призваны облегчить жизнь разработчиков программного обеспечения. Объектно-ориентированное..
Как это решить
Когда я был начинающим программистом, я понял, наблюдая за более опытными людьми, что одним из самых важных навыков, которыми может обладать разработчик, является способность быстро решать проблемы. Но когда я спрашивал их, как им удалось решить такую-то проблему, они обычно долго вздыхали, а потом говорили мне: «Это просто из опыта…»
Сейчас я нахожусь в ситуации, когда я наставляю начинающих разработчиков. Они задают мне тот же вопрос, и, по иронии судьбы, я ловлю себя на том, что..
Программа для интерфейса, а не реализация.
Все мы, программисты, наверное, слышали фразу под названием «Программируйте интерфейс, а не реализацию». Когда я впервые услышал эту фразу, она меня очень смутила, и мне потребовалось некоторое время, чтобы понять и применять этот принцип в моем ежедневном процессе разработки. Большинство людей или онлайн-ресурсов, с которыми я консультировался, не объясняли эту концепцию очень простым или понятным способом. Но поскольку я потратил так много времени на то, чтобы правильно понять эту..
Практический пример: рефакторинг проекта Java от начала до конца
Рефакторинг может оказаться непростой задачей, особенно когда вы работаете над большим и сложным проектом Java. Однако это необходимый процесс, который помогает улучшить структуру вашего кода, сохраняя при этом его функциональность. В этом сообщении блога представлен пример рефакторинга проекта Java от начала до конца.
Введение
Давайте рассмотрим проект, доставшийся нам в наследство — приложение для интернет-магазина книг. Несмотря на то, что он полнофункциональный и..
Вопросы по теме 'solid-principles'
Каков пример принципа единой ответственности?
Может ли кто-нибудь привести мне пример принципа единой ответственности? Я пытаюсь понять, что на практике означает, что класс несет единственную ответственность, поскольку боюсь, что, вероятно, нарушаю это правило каждый день.
32194 просмотров
schedule
20.05.2024
Решает ли это нарушение квадратно-прямоугольной замены Лискова?
Я новичок в принципах проектирования SOLID. Одна вещь, с которой у меня возникли проблемы с пониманием, - это пример "квадрат-прямоугольник" нарушения принципа замены Лискова. Почему установщик высоты/ширины квадрата должен переопределять параметры...
2276 просмотров
schedule
19.04.2024
принцип открыт-закрыт - рефакторинг для создания базового класса на основе новых функций
Поэтому, когда был написан исходный код, нужен был только, скажем, класс LabTest. Но теперь скажем, что у нас есть новые требования, чтобы добавить, например, RadiologyTest, EKGTest и т. Д.
У этих классов много общего, поэтому имеет смысл иметь...
236 просмотров
schedule
22.04.2024
Можно ли применить принцип разделения интерфейса к объектам Python?
В попытке применить принципы SOLID к проекту Python, который вырос органично и нуждается в рефакторинге, я пытаюсь понять, как работает разделение интерфейса Принцип можно применить к языку Python , когда интерфейсы не существуют как языковая...
2375 просмотров
schedule
04.06.2024
Говорит ли Принцип Открытости/Закрытости, что мы не можем менять интерфейсы наших классов?
Посмотрите на этот класс, пожалуйста:
public class SomeClass {
public void method1(){
// do something
}
public void method2(){
// do something
}
}
Далее представьте, что 10 классов наследуют этот класс. Итак, если мы добавим...
298 просмотров
schedule
01.05.2024
Принцип инверсии зависимостей внутри
Я читал о твердых принципах ООП ( Принцип инверсии зависимостей ) и не совсем понял, как это работает.
Когда один класс явно знает о конструкции и реализации другого класса, изменения в одном классе повышают риск нарушения работы другого...
604 просмотров
schedule
12.12.2022
Внедрение конструктора с двумя разными интерфейсами (Single Responsibility и Interface Segregation)
Я изучаю принципы SOLID. Сейчас я работаю с принципами внедрения зависимостей и разделения интерфейса. У меня уже есть основы этих двух, но когда я объединил их, я запутался. Вот моя реализация..
class Person
{
public Person(string name,...
324 просмотров
schedule
02.05.2024
Нарушение провайдера
Я задал вопрос об использовании стратегии pattern и LSP, но ответы были неоднозначными, и в долгосрочной перспективе это не очень хорошая идея. Однако в комментарии внизу моего вопроса говорилось, что, хотя я не нарушаю LSP, я нарушаю Принцип...
537 просмотров
schedule
20.11.2022
Как лучше проверить 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 просмотров
schedule
13.01.2024
Как реализовать паттерн Посетитель для подтипов абстрактного класса или интерфейса?
У меня возникла эта конкретная проблема, с которой я не мог разобраться с другими вопросами. Я пытаюсь реализовать посетителя для игры, посетитель - это класс Attack , и он должен искать в матрице ячейки, которые могут содержать Characters , затем,...
395 просмотров
schedule
06.11.2023
Как преобразовать условные операторы в OCP (открытый и закрытый принцип) в SOLID?
У меня есть код, который выполняет различные проверки базы данных на основе переданного строкового значения. Я могу решить это с помощью нескольких условных операторов (if и else), и я точно знаю, что это нарушает принцип OCP в Solid, потому что он...
694 просмотров
schedule
25.12.2023
Как использовать принцип Open/Closed для замены блока переключателя, который изменяет общее состояние
Я работаю над проектом, который требует от меня создания отчета на основе купленной аренды. Я должен вести подсчет для каждого типа аренды и суммировать соответствующие итоги. В настоящее время я использую блок переключателей, чтобы определить,...
121 просмотров
schedule
16.11.2022
Нарушает ли шаблон декоратора принципы SOLID?
Допустим, у нас есть такой класс компонента:
class Component:
def operation(self) -> str:
return f"Performing operation"
def another_operation(self) -> str:
return f"Performing another operation"...
69 просмотров
schedule
07.11.2023
Нарушает ли Factory Pattern в js принцип Open-Close?
поскольку JS не поддерживает абстрактные классы или наследование, каждый раз, когда мы хотим добавить новый тип, который будет создан при использовании фабричного шаблона, нам придется модифицировать код, что означает, что мы нарушаем принцип...
82 просмотров
schedule
21.05.2024