https://tech.kakaobank.com/posts/2411-solid-truth-or-myths-for-developers/
모든 개발자가 알아야 할 SOLID의 진실 혹은 거짓
기술 면접 자리에서 SOLID 5대 원칙에 대한 질문을 받아보신 분이라면 주목! 이 글에서는 SOLID 원칙의 역사와 장점, 그리고 각각의 원칙에서 중요한 점을 면접 상황 예시를 통해 가볍게 풀어보았습
tech.kakaobank.com
예를 들어 A라는 회사의 시스템이 작은 기능 추가에도 수십 개의 테스트가 깨질 만큼 복잡하다면, 기능을 자주 추가하는 것이 어려울 것입니다. 이때 매달 새로운 기능을 출시할 수 있는 경쟁사 B가 있다면, A회사는 경쟁에서 뒤처질 수밖에 없습니다. 따라서 시스템은 항상 결합도가 낮고 응집도가 높은 상태를 유지하는 것이 중요합니다.
아무리 좋은 코드라도 본인만 이해할 수 있다면 좋은 설계라 할 수 없습니다. 깔끔한 코드는 디버깅과 유지보수를 쉽게 만들어 소프트웨어 품질 향상에 기여합니다.
🇸 : Single Responsibility Principle(단일 책임 원칙)
“단일 모듈(module)은 변경의 이유가 하나, 오직 하나뿐 이어야 한다.”
🇴 : Open-Closed Principle(개방-폐쇄 원칙)
“확장에 열려 있어야 하고, 변경에는 닫혀 있어야 한다.”
-> 기존 코드를 전혀 변경하지 않고도 기능을 확장
🇱 : Liskov Substitution Principle(리스코프 치환 원칙)
리스코프 치환 원칙에서 가장 중요한 부분은 치환해도 ‘프로그램의 행위’가 변하지 않는다는 것
🇮 : Interface Segregation Principle(인터페이스 분리 원칙)
“사용하지 않는 것에 의존하지 않아야 한다.”
-> 만약 사용하지 않는 함수가 존재한다면, 인터페이스를 분리해야 한다
🇩 : Dependency Inversion Principle(의존성 역전 원칙)
“추상화에 의존해야 하며 구체화에 의존하면 안 된다.”
-> 변동성이 큰 구현체보다 안정된 인터페이스를 참조
https://tech.kakaobank.com/posts/2411-solid-truth-or-myths-for-developers/
모든 개발자가 알아야 할 SOLID의 진실 혹은 거짓
기술 면접 자리에서 SOLID 5대 원칙에 대한 질문을 받아보신 분이라면 주목! 이 글에서는 SOLID 원칙의 역사와 장점, 그리고 각각의 원칙에서 중요한 점을 면접 상황 예시를 통해 가볍게 풀어보았습
tech.kakaobank.com
예를 들어 A라는 회사의 시스템이 작은 기능 추가에도 수십 개의 테스트가 깨질 만큼 복잡하다면, 기능을 자주 추가하는 것이 어려울 것입니다. 이때 매달 새로운 기능을 출시할 수 있는 경쟁사 B가 있다면, A회사는 경쟁에서 뒤처질 수밖에 없습니다. 따라서 시스템은 항상 결합도가 낮고 응집도가 높은 상태를 유지하는 것이 중요합니다.
아무리 좋은 코드라도 본인만 이해할 수 있다면 좋은 설계라 할 수 없습니다. 깔끔한 코드는 디버깅과 유지보수를 쉽게 만들어 소프트웨어 품질 향상에 기여합니다.
🇸 : Single Responsibility Principle(단일 책임 원칙)
“단일 모듈(module)은 변경의 이유가 하나, 오직 하나뿐 이어야 한다.”
🇴 : Open-Closed Principle(개방-폐쇄 원칙)
“확장에 열려 있어야 하고, 변경에는 닫혀 있어야 한다.”
-> 기존 코드를 전혀 변경하지 않고도 기능을 확장
🇱 : Liskov Substitution Principle(리스코프 치환 원칙)
리스코프 치환 원칙에서 가장 중요한 부분은 치환해도 ‘프로그램의 행위’가 변하지 않는다는 것
🇮 : Interface Segregation Principle(인터페이스 분리 원칙)
“사용하지 않는 것에 의존하지 않아야 한다.”
-> 만약 사용하지 않는 함수가 존재한다면, 인터페이스를 분리해야 한다
🇩 : Dependency Inversion Principle(의존성 역전 원칙)
“추상화에 의존해야 하며 구체화에 의존하면 안 된다.”
-> 변동성이 큰 구현체보다 안정된 인터페이스를 참조