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