Написание небольших функций и преобразование длинных методов в более мелкие могут иметь многочисленные преимущества для вашей кодовой базы.
Во-первых, небольшие функции, как правило, легче понять и обдумать, чем более крупные и сложные методы. Это связано с тем, что функция, которая является короткой и сосредоточена на одной задаче, разработчикам легче понять и понять ее назначение и то, как она вписывается в общую кодовую базу. В результате, написание небольших функций может улучшить ремонтопригодность и удобство использования вашего кода. Кроме того, небольшие функции могут быть более гибкими и пригодными для повторного использования, поскольку их можно легко комбинировать и использовать в различных контекстах для решения различных задач. Напротив, длинные и сложные методы могут быть трудными для понимания и менее адаптируемыми к изменяющимся требованиям.
Чтобы преобразовать длинный метод в более мелкие функции, вы можете выполнить следующие шаги:
Определите различные задачи, которые выполняет метод.
Извлеките каждую из этих задач в отдельную функцию, дав каждой функции описательное имя.
Переместите извлеченные функции в логическое место в кодовой базе, например закрытый метод или другой класс.
Измените исходный метод, чтобы при необходимости вызывать извлеченные функции.
Например, следующий метод:
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