단일 책임 원칙(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를 준수하여 클래스를 설계하면 유지보수성과 확장성이 향상되는 장점을 얻을 수 있습니다. 클래스의 책임을 명확히 분리하고, 변경의 이유를 최소화하는 것이 핵심입니다.