TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #287 866
🪙Привет, с вами Катя, Flutter Dev Friflex

В прошлом посте я рассказывала о принципе единственной ответственности (S в SOLID). Сегодня разбираем следующую букву — O (Open/Closed Principle), принцип открытости/закрытости.

Что такое Open/Closed Principle?
Принцип открытости/закрытости гласит: программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации. Это означает, что вы должны иметь возможность добавлять новую функциональность без изменения существующего кода.

Почему это важно?
Чем больше кода мы изменяем, тем больше багов мы создаем. Каждое изменение существующего кода несет риск появления ошибок и требует повторного тестирования всех зависимых компонентов. Следование OCP минимизирует эти риски, позволяя расширять функциональность без модификации уже работающего кода.

Пример
❌Нарушение OCP


class DiscountCalculator {
  double calculate(double price, String customerType) {
    if (customerType == 'regular') {
      return price * 0.95;
    } else if (customerType == 'premium') {
      return price * 0.90;
    } else if (customerType == 'vip') {
      return price * 0.80;
    }
    return price;
  }
}


Метод нужно менять при добавлении новых правил.

✅Правильное применение OCP

abstract class DiscountStrategy {
  double apply(double price);
}

class RegularDiscount implements DiscountStrategy {
  @override
  double apply(double price) => price * 0.95;
}

class PremiumDiscount implements DiscountStrategy {
  @override
  double apply(double price) => price * 0.90;
}

class VipDiscount implements DiscountStrategy {
  @override
  double apply(double price) => price * 0.80;
}

class DiscountCalculator {
  double calculate(double price, DiscountStrategy strategy) {
    return strategy.apply(price);
  }
}


Открыты для расширения, закрыты для модификации

Преимущества OCP
✔️
Меньше ошибок при внесении изменений
✔️Не требуется регрессионное тестирование существующего кода
✔️Более простой процесс расширения функциональности
✔️Повышение стабильности и надежности системы

Принцип открытости/закрытости — это основа стабильной и расширяемой архитектуры. Помните главное правило: чем больше кода мы изменяем, тем больше багов мы создаем.

В следующем посте я расскажу о принципе подстановки Барбары Лисков (L в SOLID).

✅Подписывайтесь, чтобы не пропустить
  • 👍 12
  • 🔥 6
  • 🤔 4
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →