Записки погромиста

Записки погромиста на вольные темы

Инкапсулируйте то, что может измениться.

Photo by Pixabay on Pexels.com

Принцип «Инкапсулируйте то, что изменяется» — это принцип в проектировании программного обеспечения, который предполагает изоляцию и скрытие частей вашего кода, которые могут измениться. Этот принцип является частью более широкого «Принципа открытости/закрытости» из принципов SOLID.

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

Вот простой пример:

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

class PriceCalculator {
  private basePrice: number;

  constructor(basePrice: number) {
    this.basePrice = basePrice;
  }

  public calculateTotalPrice(): number {
    const taxAmount = this.calculateTax();
    const discountAmount = this.calculateDiscount();
    return this.basePrice + taxAmount - discountAmount;
  }

  private calculateTax(): number {
    // Логика расчета налогов
    return this.basePrice * 0.1; // Например, 10% налог
  }

  private calculateDiscount(): number {
    // Логика расчета скидок
    return 0; // По умолчанию скидки отсутствуют
  }
}

В этом примере логика расчета налогов и скидок инкапсулирована в частных методах. Если ставки налогов или правила скидок изменятся в будущем, вы можете внести изменения в эти частные методы без влияния на остальной код, который использует класс PriceCalculator.

Инкапсулирование изменяемых частей упрощает адаптацию к изменяющимся требованиям или бизнес-правилам без необходимости изменения больших участков вашей кодовой базы, что может снизить риск возникновения новых ошибок и улучшить поддерживаемость кода.

Published by

Оставьте комментарий