[파이썬] 단일 책임 원칙과 클래스 디자인

Single Responsibility Principle

단일 책임 원칙(Single Responsibility Principle, SRP)은 객체지향 프로그래밍 디자인 원칙 중 하나로, 한 클래스는 단 한 가지의 변경 이유를 가져야 한다는 원칙을 말합니다. 이를 통해 클래스의 책임을 명확히 분리하여 유연하고 확장 가능한 코드를 작성할 수 있습니다.

Python은 다형성을 지원하는 객체지향 프로그래밍 언어로, SRP를 준수하여 클래스를 설계하면 코드 유지보수성과 확장성을 크게 향상시킬 수 있습니다. 아래 예시를 통해 SRP와 클래스 디자인을 살펴보겠습니다.

예시: 게시판 애플리케이션

우리가 만들고 있는 애플리케이션은 간단한 게시판이라고 가정하겠습니다. 게시판에는 사용자(User), 게시글(Post), 댓글(Comment)이라는 주요한 기능이 있습니다.

User 클래스

class User:
    def __init__(self, name, email):
        self.name = name
        self.email = email

    def login(self):
        # 로그인 로직
        pass

    def logout(self):
        # 로그아웃 로직
        pass

    def update_profile(self):
        # 프로필 업데이트 로직
        pass

User 클래스는 사용자의 정보를 저장하고, 로그인/로그아웃, 프로필 업데이트와 같은 사용자 관련 기능을 제공합니다. 이 클래스는 단일 책임 원칙을 준수하고 있습니다. 즉, 사용자의 정보와 관련된 역할만 수행하고 다른 책임을 가지지 않습니다.

Post 클래스

class Post:
    def __init__(self, title, content, author):
        self.title = title
        self.content = content
        self.author = author

    def save(self):
        # 게시글 저장 로직
        pass

    def update(self):
        # 게시글 업데이트 로직
        pass

    def delete(self):
        # 게시글 삭제 로직
        pass

Post 클래스는 게시글의 정보를 저장하고, 저장, 업데이트, 삭제와 같은 게시글 관련 기능을 제공합니다. 마찬가지로 이 클래스도 단일 책임 원칙을 준수하고 있습니다.

Comment 클래스

class Comment:
    def __init__(self, text, author):
        self.text = text
        self.author = author

    def save(self):
        # 댓글 저장 로직
        pass

    def update(self):
        # 댓글 업데이트 로직
        pass

    def delete(self):
        # 댓글 삭제 로직
        pass

Comment 클래스는 댓글의 정보를 저장하고, 저장, 업데이트, 삭제와 같은 댓글 관련 기능을 제공합니다. 역시 단일 책임 원칙을 준수하고 있습니다.

요약

단일 책임 원칙은 클래스 디자인을 향상시키는 중요한 원칙 중 하나입니다. Python과 같은 객체지향 프로그래밍 언어를 사용할 때 SRP를 준수하여 클래스를 설계하면 유지보수성과 확장성이 향상되는 장점을 얻을 수 있습니다. 클래스의 책임을 명확히 분리하고, 변경의 이유를 최소화하는 것이 핵심입니다.