메뉴 건너띄기
상단메뉴 바로가기 본문 바로가기

SOLID 원칙

  • 2024-11-13 09:38
  • 홍보담당자

안녕하세요, 여러분!

오늘은 객체 지향 언어를 배워보신 분이라면

한 번 쯤은 머리 싸매고 이해하려고 해봤을 <SOLID 원칙>

지금부터 가볍고 쉽게 살펴보겠습니다!


 
 


SOLID 원칙은 코드의 유지보수성과 확장성을 높이기 위해

고안된 다섯 가지 설계 원칙이에요.


객체 지향 프로그래밍에서 코드의 품질을

높이기 위해 꼭 알아두어야 하는 개념이죠.

SOLID 원칙을 잘 지키면 코드 재사용성도 높아지고,

새로운 기능 추가도 훨씬 수월해진다는 장점이 있습니다.






먼저, 단일책임 원칙입니다.

각 클래스가 하나의 역할에만 집중할 수 있도록 설계하는 것이 좋다는 건데요.


예를 들어, 그림 속 클래스 A, B, C, D처럼

다른 역할을 하는 클래스는 각각을 분리하는 게 좋습니다.

이렇게 하면 특정 기능이 변경되더라도

다른 기능에 영향을 주지 않아서 유지보수가 훨씬 쉬워져요.

 
 
 
 
 
 
 


다음은 개방-폐쇄 원칙입니다.

이 원칙은 새로운 기능을 추가할 때

기존 코드를 수정하지 않고도 확장할 수 있도록 설계하라는 뜻이에요.


예를 들어, 쇼핑몰의 사장이 되었다고 가정해볼게요.

처음에는 쇼핑몰의 결제 수단을 신용카드와 무통장입금으로 운영하다가,

어느 날 카카오페이를 추가하고 싶어진 거죠.


이때, 결제 수단을 새로 추가하는 과정에서

기존 코드에 손을 대지 않아도 되도록 설계하는 것이 바로 이 원칙입니다.

기존 코드를 그대로 두고 결제 수단을 추가(확장)할 수 있으면, 오류 발생 가능성이 줄어들테니까요!







다음 원칙은 상속 관계에서 자식 클래스가 부모 클래스를 완벽히 대체할 수 있어야 한다는 원칙이에요.


예를 들어, 새(Bird)라는 부모 클래스가 있는데,

모든 새가 날 수 있는 것은 아니죠?

펭귄처럼 날지 못하는 새는 Bird 클래스를 상속받기보다는

별도의 클래스로 만드는 게 좋아요.

이 원칙으로 상속 관계를 가지는 여러 클래스를 잘 유지할 수 있죠.

 
 
 
 
 
 
 


인터페이스 분리 원칙은 클라이언트가 자신이 사용하지 않는 메서드에 의존하지 않도록,

작고 구체적인 인터페이스를 여러 개 만들어야 한다는 뜻이에요.


예를 들어, 복사, 스캔, 공유 기능이 모두 포함된 프린터가 있고,

복사 기능만 있는 프린터도 있다고 해봅시다.

이때 프린터 인터페이스를 만들고자 하면,

복사 / 스캔 / 공유 기능을 모두 포함하는 것보다는

복사 기능만 있는 인터페이스가 더 유리하겠죠.

이렇게 하면 불필요한 기능에 의존하지 않고 필요한 기능만 사용할 수 있어요.







의존성 역전 원칙은 상위 모듈이 특정 하위 모듈에 의존하지 않도록

추상화된 인터페이스에 의존하라는 원칙이에요.


예를 들어, 서로 다른 전등에 각각의 스위치가 존재한다고 생각해볼게요.

그러면 A전등을 켤 수 있는 A스위치로는 B전등를 켤 수 없겠죠?

그런데 만약 모든 전등을 하나의 스위치로 켤 수 있다면요?


이처럼 각 전등이 스위치 종류에 의존하지 않도록 하는 게 의존성 역전 원칙입니다.

이렇게 하면 상위 모듈과 하위 모듈이 독립적이어서 유지보수와 확장이 쉬워져요!







이렇게 다섯 가지 SOLID 원칙을 간단히 살펴봤는데요!

객체 지향 프로그래밍에서 SOLID 원칙은 바람직한 설계를 돕고,

코드의 유연성과 확장성을 높이는 데 중요한 역할을 합니다.


다음번에 코딩할 때는 SOLID 원칙을 떠올리며 코딩해보는 건 어떨까요?




 

 

 

첨부파일 (1)