관심사 분리란 무엇인지 설명해주세요.
separation of concerns, SoC
가독성 높은 코드를 짜려고 노력하다보면 도달하게 되는 어쩌면 개발자가 최초로 만나게 되는 디자인패턴이라고 볼 수도 있겠다.
예를 들어 자동차의 구현과 제작은 매우 복잡하고 어렵기에 핸들, 바퀴, 골격 각각 담당하여 개발하고 조합을 합니다.
이처럼 소프트웨어를 개발 할 때에 모듈이나 함수가 하나의 큰 책임을 지기 보다는 하나의 기능만을 수행할 수 있도록 독립적으로 개발한 뒤 조합하는 방식으로 소프트웨어를 구성하는 것을 관심사 분리라고 합니다.
이를 통해서 유지보수의 편의성, ‘분리’, ‘확장’을 고려한 코드를 작성할 수 있다는 장점이 있다.
SOLID 원칙에 대해 설명해주세요.
객체지향 개발의 5대 원칙을 말한다.
- 단일책임의 원칙
- 모듈이나 함수 단위에서 기능을 단순화하여 분리
- 클래스는 하나의 책임을 수행하는데 집중되어 있어야 한다는 원칙
- 개방 폐쇄의 원칙
- 변경에 유연하게 대처할 수 있는 설계
- 객체의 확장에는 열려있고 변경은 최소화할 수 있도록 변경에는 닫혀있는 코드를 작성해야한다.
- 리스코프 치환의 원칙
- 부모 객체와 자식 객체의 일관성
- 자식 클래스는 자신의 부모 클래스에서 가능한 모든 행위를 수행할 수 있어야 하고 부모클래스와 자식클래스의 행위는 일관되어야 한다는 의미
- 인터페이스 분리의 원칙
- 가능한 최소한의 인터페이스를 사용하여 기능을 분리
- 클라이언트입장에서 사용하는 기능만 제공하도록 인터페이스를 분리해야한다는
- 의존성 역전의 원칙
- 수정에 영향을 최대한 적게 받도록 설계
- 객체는 서로 도움을 주고받으며 의존관계를 발생시키는데 그 의존관계를 맺을 때 변화하기 쉬운 것보다 변화가 없을 예정인 객체에 의존하라는 원칙
반응형
'STUDY > Python' 카테고리의 다른 글
🎄 학습일지 22.12.8 (0) | 2022.12.08 |
---|---|
QuerySet Method | Aggregate (0) | 2022.11.07 |
Method | get vs post (0) | 2022.09.23 |
3-way handshake (0) | 2022.09.21 |
HTTP와 HTTPS를 차이점 (0) | 2022.09.21 |