OOP SW개발의 원칙들 : SOLID(+ DRY, KISS, YAGNI)

코드를 작성하다 보니, 원칙 없이 작성된 코드는 재사용되기 어려울 것 같다는 생각에

코드 작성 원칙에 대해서 천천히 알아보고자 합니다.

또한 코드 작성 원칙에 대해서 신경쓰면서 코딩을 하면 어떤 부분이 달라지는지 스스로 생각할 시간을 가지고 싶었습니다.

오늘은 객체지향 개발을 할 때의 원칙들인 SOLID원칙과 DRY, KISS, YAGNI 원칙들에 대해 알아보고자 합니다.

 

 

# TODO: 설명 약간...만 더 추가하기

 

 

1. SOLID

  • S - SRP(Single Responsibility Principle) : 내가 만든 클래스(혹은 모듈, 함수 등)는 하나의 기능만 제공해야한다. 코드를 변경할 때, 여러 기능이 하나의 클래스등에 구현되어 있으면 어느 부분을 고칠지 알기 어렵다.
  • O - OCP(Open/Closed Principle) : OOP(objected-oriented programming)에서 소프트웨어의 개체(클래스, 모듈, 함수 등)들은 확장성에 대해 열려있어야 하지만, 수정에 대해서는 닫혀 있어야 한다. (즉, 코드 수정이 없이 확장될 수 있도록 작성되어야 한다.)
  • L - LSP(Liskov Substitution Principle) : 데이터 타입 T의 하위 타입 S에 대해, T 대신 S가 프로그램 내에서 사용된다 하더라도 바람직한 특성들(정확도, 업무 수행능력 등)의 변화 없이 동작해야 한다. (코드 내에서 하위 타입으로 치환되더라도 성능이 떨어지면 안된다!)
  • I - ISP(Interface Segregation Principle) : 큰 인터페이스들을 작게 나눠서, 고객들이 관심있는 인터페이스에만 연결 되도록 해야 한다.(인터페이스는 고객이 관심 있는 만큼만 보여주면 된다 !)
  • D - DIP(Dependency Inversion Principle) :
    • A. 하이레벨 모듈들은 로우레벨 모듈에 대해서 종속성이 있으면 안된다. 하이레벨과 로우레벨은 추상화에 따른 구분이다.
    • B. 추상화는 구체적인 것에 의존하면 안된다. 세부적인 것(클래스 등)들은 추상적인 것에 의존한다.

 

 

 

2. DRY - Don't Repeat Yourself

같은 일을 두 번 하지 말라.

 

같은 코드가 두 번 이상 사용될 경우에는 재사용한다. 프로젝트가 커진다면, 작은 조각으로 나누어 코드를 재사용한다.

효과 : 코드의존성에 의한 코드복잡도가 줄어들어 유지보수비용이 절감된다.

 

3. KISS - Keep It Simple, Stupid.

단순하게 하라.

 

4. YAGNI - You Ain't Gonna Need It

정말 필요할 때까지 해당 기능을 만들지 말라.

추후에 다시 고치게 된다.

댓글

Designed by JB FACTORY