-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor/answer service and test #144
Conversation
… 이동. (SRP, OCP 원칙)
…를 따로 만듬 (SRP,OCP) 2. 테스트 코드 내에서 변경이 될 때마다 깨지기 쉬운 Class path를 관리하기 위해 mixin 도입
… 패턴을 적용하여 확장성을 높임.
SRP (Single Responsibility Principle)
OCP (Open-Closed Principle)
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
리팩토링 깔끔하네요.
|
||
|
||
class LightQuestionGiver(metaclass=SingletonMeta): | ||
class LightQuestionGiver(DirectoryMixin, metaclass=SingletonMeta): | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mixin 패턴을 알고는 있었지만 실제로 활용하는 건 처음 봤네요.
class DirectoryMixin: | ||
""" | ||
Python에서 믹스인(Mixin)은 특정 클래스에 메서드를 제공하기 위해 다른 클래스에 "믹스인"될 수 있는 클래스를 말합니다. 믹스인은 다른 클래스의 기능을 확장하거나 수정할 목적으로 사용되며, 보통 단독으로는 인스턴스화되지 않습니다. 이는 다중 상속의 한 형태로서, 여러 클래스에서 필요로 하는 공통 기능을 제공하는 재사용 가능한 클래스입니다. | ||
|
||
믹스인의 주요 목적은 코드 중복을 줄이고, 클래스 간에 기능을 공유하여 각 클래스를 더 작고, 관리하기 쉽고, 단일 책임 원칙을 따르도록 만드는 것입니다. | ||
""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
결국 상속해서 쓰는 개념이네요. 조심해서 써야겠군요.
리팩토링 : answer_service.py 와 테스트 코드 다수
create_chat_openai()
함수를llm_factory
에서 제거@patch()
파라미터가 문자열 하드 코딩인 것들 모두 Mixin의 메서드를 활용해서 대체참고 사항
python Mixin이란?
일반적으로, 믹스인은 단순하고, 잘 정의된 행동을 가지며, 가능한 한 다른 클래스와의 결합도를 낮추어야 합니다.
장점
단점