STUDY/Python

기술면접 스터디(9월27일 : 관심사 분리 | SOLID 원칙)

nicesugi 2022. 9. 27. 20:29

관심사 분리란 무엇인지 설명해주세요.

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