[파이썬] 클래스와 응집도의 관계

응집도란 코드에서 연관된 기능들이 하나의 모듈, 클래스 또는 함수에 집중되어 있는 정도를 의미합니다. 응집도가 높다는 것은 관련된 기능들이 함께 그룹화되어 있기 때문에 코드의 이해와 유지보수가 쉬워지고, 재사용성과 확장성도 높아집니다.

클래스는 파이썬에서 응집도를 증가시키기 위한 강력한 도구입니다. 클래스는 관련된 데이터와 메서드를 하나의 개념적인 단위로 묶어줌으로써, 코드의 모듈화와 응집도를 증가시킬 수 있습니다.

예시 코드

다음은 응집도가 낮은 코드와 응집도가 높은 코드의 예시입니다.

응집도가 낮은 코드:

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

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

def print_rectangle(width, height):
    area = calculate_area(width, height)
    perimeter = calculate_perimeter(width, height)
    print(f"Width: {width}, Height: {height}")
    print(f"Area: {area}")
    print(f"Perimeter: {perimeter}")

width = 5
height = 10
print_rectangle(width, height)

위 코드에서 함수들은 각각 다른 기능을 수행하고 있습니다. calculate_area()는 너비와 높이를 곱하여 면적을 계산하고, calculate_perimeter()는 너비와 높이로 둘레를 계산합니다. print_rectangle()은 면적과 둘레를 출력합니다. 하지만 이 함수들은 서로 관련성이 없어서 코드가 분산되어 응집도가 낮습니다.

응집도가 높은 코드:

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def calculate_area(self):
        return self.width * self.height

    def calculate_perimeter(self):
        return 2 * (self.width + self.height)

    def print_info(self):
        area = self.calculate_area()
        perimeter = self.calculate_perimeter()
        print(f"Width: {self.width}, Height: {self.height}")
        print(f"Area: {area}")
        print(f"Perimeter: {perimeter}")

rectangle = Rectangle(5, 10)
rectangle.print_info()

위 코드는 Rectangle 클래스를 사용하여 응집도를 증가시켰습니다. Rectangle 클래스는 너비와 높이를 속성으로 갖고 있으며, 면적과 둘레를 계산하는 메서드인 calculate_area()calculate_perimeter()를 제공합니다. print_info() 메서드는 속성과 계산된 결과를 출력합니다.

이렇게 클래스를 사용하면 관련 기능들이 하나의 개념적인 단위로 묶이기 때문에 코드의 이해와 유지보수가 쉬워지며, 응집도가 증가합니다.

결론

파이썬에서 클래스를 사용하여 응집도를 증가시킬 수 있습니다. 관련 기능들을 클래스로 묶으면 코드의 모듈화와 재사용성, 확장성을 높일 수 있습니다. 클래스를 적절히 활용하여 응집도가 높은 코드를 작성하는 것이 좋습니다.