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, під час рефакторингу сильно рекомендується для поступового відстежування змін.
Дивіться також
Для тих, хто хоче дізнатися більше, зануртеся в наступні ресурси:
- Книга Мартіна Фаулера: Рефакторинг: Поліпшення дизайну існуючого коду
- Рефакторинг Python з
rope: GitHub - rope - Документація з рефакторингу PyCharm: Jetbrains PyCharm Рефакторинг джерела коду
- Refactoring.guru: Рефакторинг та шаблони проектування
- Лекції про чистий код від Дядька Боба (Роберт С. Мартін): Чистий Код - Дядько Боб / Урок 1