TIL

[TIL]객체 지향 원칙과 코드 리팩토

높하늬바람 2025. 5. 14. 09:47

TIL - 2025.03.10

오늘 배운 것 개요

  • Java에서 객체 지향 원칙(OOP) 을 적용하여 코드를 리팩토링함.
  • 장바구니 기능 개선: 전체 삭제 및 특정 상품 삭제 기능 추가.
  • StringBuilder 최적화: 문자열 결합 시 성능 향상을 위해 StringBuilder 활용.
  • 오류 수정: String.append() 오류 해결 및 불변 객체(String)의 문제 해결.

1. Kiosk 프로젝트

1. OOP 원칙 적용 및 개선

1. OOP 원칙 점검

  • SRP (단일 책임 원칙) -> 클래스는 단 하나의 책임만 가져야 한다.
  • OCP (개방-폐쇄 원칙) -> 클래스는 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다.
  • LSP (리스코프 치환 원칙) -> 자식 클래스는 부모 클래스를 대체할 수 있어야 한다.
  • ISP (인터페이스 분리 원칙) -> 클라이언트가 사용하지 않는 인터페이스에 의존하지 않아야 한다.
  • DIP (의존 역전 원칙) -> 고수준 모듈이 저수준 모듈에 의존하면 안 된다.

2. 개선 코드

  • 하나의 클래스에서 하나의 동작을 하도록 수정
    1. MenuItem 개별 메뉴
    2. Menu 메뉴 그룹
    3. Kiosk UI/로직
      으로 세분화
  • Getter / private 사용
  • order()에서 결제 여부 입력값을 유효성 검사

2. 알고리즘 학습

1. 문자열 결합 최적화 (StringBuilder)

1. 기존 코드 문제점

  • 기존 String answer += ... 방식은 문자열을 반복적으로 추가할 때마다 새로운 String 객체를 생성하여 메모리 낭비
  • StringBuilder를 사용하면 기존 객체를 수정하므로 성능이 향상

2. 성능 비교

방식 문자열 추가 방식 성능
String += 새로운 객체 생성 후 기존 값 복사 느림 (메모리 낭비)
StringBuilder.append() 기존 객체에 바로 추가 빠름 (메모리 효율적)

오늘의 결론

  1. OOP 원칙에 입각한 코드 수정
  2. 장바구니 기능 개선
  3. 문자열 결합 최적화 (StringBuilder)

다음 학습 목표

  • kiosk과제 장바구니 및 할인혜택 구현

'TIL' 카테고리의 다른 글

[TIL]Enum 활용  (0) 2025.05.14
[TIL]예외 처리 개선  (0) 2025.05.14
[TIL]Kiosk 프로젝트 구조 정리  (0) 2025.05.14
[TIL]REST API를 활용한 GitHub 레포지토리 목록 조회  (0) 2025.05.14
[TIL]연산자 처리  (0) 2025.05.14