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_areacalculate_perimeter 함수와 같은), 인라인화, 객체 간 기능 이동, 이름 변경 메서드나 변수의 명확성을 높이는 기술에 특히 적합합니다.

Python에서의 리팩토링은 PyCharm과 같이 내장된 리팩토링 기능을 가진 도구나 리팩토링을 위해 특별히 설계된 Python 라이브러리인 rope을 자주 사용합니다. 리팩토링하는 동안 git과 같은 버전 관리의 신중한 사용이 변화를 점진적으로 추적하는 데 강력히 권장됩니다.

또한 보기

더 알고 싶은 분들을 위한 추천 자료: