OOP와 스프링 프레임워크 | 소프트웨어 설계 원칙

Faithful Dev·2025년 2월 17일

스프링 프레임워크

목록 보기
2/20

소프트웨어 개발에서는 유지보수성과 확장성을 고려한 설계 원칙이 중요하다. 대표적인 원칙으로는 SOLID, KISS, YAGNI가 있으며, 각각 코드의 구조를 명확하게 하고 불필요한 복잡성을 줄이는 데 도움이 된다.


SOLID 원칙

SOLID 원칙은 객체지향 프로그래밍(OOP)에서 코드의 유지보수성과 확장성을 높이기 위한 다섯 가지 설계 원칙을 의미한다.

  1. 단일 책임 원칙 (Single Responsibility Principle, SRP)
    • 클래스는 단 하나의 책임만 가져야 한다.
    • 하나의 변경 이유만 존재해야 한다.
    • ✔️ 예시: 사용자 정보 처리 클래스와 로그 기록 클래스를 분리
  2. 개방-폐쇄 원칙 (Open/Closed Principle, OCP)
    • 확장에는 열려 있고, 수정에는 닫혀 있어야 한다.
    • 새로운 기능 추가 시 기존 코드를 수정하지 않고 확장할 수 있어야 한다.
    • ✔️ 예시: 인터페이스를 활용하여 새로운 기능 추가
  3. 리스코프 치환 원칙 (Liskov Substitution Principle, LSP)
    • 하위 클래스는 상위 클래스를 대체할 수 있어야 한다.
    • 상위 클래스의 기능을 변경하지 않고 확장해야 한다.
    • ✔️ 예시: 부모 클래스의 기능을 유지한 채로 확장하는 방식으로 상속 구현
  4. 인터페이스 분리 원칙 (Interface Segregation Principle, ISP)
    • 클라이언트가 자신이 사용하지 않는 메서드에 의존하지 않아야 한다.
    • 하나의 거대한 인터페이스보다는 여러 개의 작은 인터페이스로 분리하는 것이 좋다.
    • ✔️ 예시: 하나의 인터페이스를 여러 개의 역할별 인터페이스로 나누기
  5. 의존 역전 원칙 (Dependency Inversion Principle, DIP)
    • 고수준 모듈은 저수준 모듈에 의존하면 안된다.
    • 추상화에 의존해야 하며, 구체적인 구현에 의존하면 안된다.
    • ✔️ 예시: 의존성 주입(DI, Dependency Injection) 활용

KISS 원칙 (Keep It Simple, Stupid)

  • 코드는 단순하고 이해하기 쉽게 작성해야 한다.
  • 불필요한 복잡성을 피하고, 읽기 쉬운 구조로 유지해야 한다.
  • ✔️ 좋은 예: 가독성이 높은 단순한 함수 작성
  • 나쁜 예: 과도한 디자인 패턴 적용으로 복잡한 코드

KISS 원칙을 지키면 코드의 유지보수성과 협업 효율이 증가한다.


YAGNI 원칙 (You Ain't Gonna Need It)

  • "당장 필요하지 않은 기능은 추가하지 않는다."
  • 개발 과정에서 필요할 것 같은 기능을 미리 구현하면 복잡성과 유지보수 비용이 증가할 수 있다.
  • ✔️ 좋은 예: 현재 요구사항에 맞춘 최소 기능 구현
  • 나쁜 예: 사용될지 모르는 기능을 미리 추가

YAGNI 원칙을 따르면 코드의 가벼움과 효율성이 유지된다.


정리

  • SOLID: 객체지향 설계를 위한 5가지 원칙
  • KISS: 코드는 단순하고 이해하기 쉽게
  • YAGNI: 필요하지 않은 기능은 만들지 말기
profile
Turning Vision into Reality.

0개의 댓글