Написание небольших функций и преобразование длинных методов в более мелкие могут иметь многочисленные преимущества для вашей кодовой базы.

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

Чтобы преобразовать длинный метод в более мелкие функции, вы можете выполнить следующие шаги:

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

func calculateTotalPrice(price: Double, tipPercentage: Double, taxPercentage: Double) -> Double {
  let tipAmount = price * tipPercentage
  let taxAmount = price * taxPercentage
  let totalPrice = price + tipAmount + taxAmount
  return totalPrice
}

может быть реорганизован в следующий класс:

class TotalCalculator {
  var price: Double
  var tipPercentage: Double
  var taxPercentage: Double

  var totalPrice -> Double {
    let tipAmount = calculateTipAmount()
    let taxAmount = calculateTaxAmount()
    return price + tipAmount + taxAmount
  }

  init(price: Double, tipPercentage: Double, taxPercentage: Double) {
    self.price = price
    self.tipPercentage = tipPercentage
    self.taxPercentage = taxPercentage
  }

  private func calculateTipAmount() -> Double {
    return price * tipPercentage
  }

  private func calculateTaxAmount() -> Double {
    return price * taxPercentage
  }
}

и может использоваться следующим образом:

let totalCalculator = TotalCalculator(price: 9.99, 
                                 tipPercentage: 0.20, 
                                 taxPercentage: 0.07)

let totalPrice = totalCalculator.totalPrice