Python:
Рефакторинг

Как:

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

# Исходная версия
length = 4
width = 3

# Расчет площади и периметра
area = length * width
perimeter = 2 * (length + width)

print("Площадь:", area)
print("Периметр:", perimeter)

Мы можем рефакторить это, инкапсулируя функциональность в функции, что делает код более организованным и повторно используемым:

# Рефакторинговая версия

def calculate_area(length, width):
    return length * width

def calculate_perimeter(length, width):
    return 2 * (length + width)

# использование
length = 4
width = 3

print("Площадь:", calculate_area(length, width))
print("Периметр:", calculate_perimeter(length, width))

Оба фрагмента выводят один и тот же результат:

Площадь: 12
Периметр: 14

Но рефакторинговая версия чище и разделяет заботы, что облегчает обновление одного расчета без воздействия на другой.

Погружение в тему

Рефакторинг имеет свои корни в ранние дни программной инженерии, когда программисты поняли, что код может — и должен — быть улучшен, даже если он уже “работает”. Знаковая книга Мартина Фаулера “Рефакторинг: улучшение проектирования существующего кода” изложила многие основные принципы и техники. Он знаменито сказал: “Любой дурак может написать код, который поймет компьютер. Хорошие программисты пишут код, который могут понять люди.”

Альтернативами рефакторингу могут быть переписывание кода с нуля или внесение незначительных изменений без систематического улучшения. Однако, как правило, рефакторинг более экономически эффективен, чем переписывание, и менее рискован, чем адаптивные изменения. Детали реализации могут быть конкретными для каждой программной парадигмы; однако объектно-ориентированное программирование особенно хорошо подходит для рефакторинга, особенно с техниками вроде извлечения методов (как наши функции calculate_area и calculate_perimeter), встраивания, перемещения функций между объектами и переименовывания методов или переменных для ясности.

Рефакторинг на Python часто использует инструменты вроде PyCharm, который имеет встроенные возможности рефакторинга, или rope, библиотеку Python, специально предназначенную для рефакторинга. Внимательное использование системы контроля версий, такой как git, во время рефакторинга настоятельно рекомендуется для поэтапного отслеживания изменений.

Смотрите также

Для тех, кто жаждет большего, погрузитесь в следующие ресурсы: