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, під час рефакторингу сильно рекомендується для поступового відстежування змін.

Дивіться також

Для тих, хто хоче дізнатися більше, зануртеся в наступні ресурси: