[TIL] Day19_객체지향 생활체조

오진선·2024년 2월 23일
0

TIL

목록 보기
12/29
post-thumbnail

Today I Learned

객체지향 생활체조 원칙 9가지

1. 한 메서드에 오직 한 단계의 들여쓰기만 한다.

  • 한 메서드에 하나의 일만 수행하도록 만든다
  • 메서드는 맡은 일이 적을수록 재사용성이 높고 디버깅이 용이하기 때문

2. else 키워드를 쓰지 않는다.

  • switch/case 구문을 포함한 분기 구문을 지양하여 코드를 간단명료하게
  • if의 내부에 return을 넣는 early return문을 활용하기
  • optimistic : 오류를 걸러내는 if 조건이 있으면, 나머지 로직은 if 이후의 기본 시나리오를 따르게 하는 것
  • defensive : 기본 시나리오를 조건에 지정한 후 조건이 충족되지 않으면 오류 상태를 반환

3. 모든 원시값과 문자열을 포장(wrap)한다.

  • 객체 내의 모든 원시 요소를 캡슐화
  • Primitive Obsession(http://wiki.c2.com/?PrimitiveObsession)을 피하기 위함
  • 변수에 행동(behavior)이 포함된다면, 캡슐화 하기(VO, Value Object)

4. 한 줄에 점을 하나만 찍는다.

  • Law of Demeter, 인접한 친구에게만 말을 걸어라
  • 메소드 체인 패턴 구현시에는 적용되지 않음

5. 줄여쓰지 않는다.

  • 명확함이 간결함보다 중요
  • 의미전달을 확실하게 하기 위함
  • 문맥상 중복되는 단어는 자제

6. 모든 entity를 작게 유지한다.

  • 하나의 Class는 50줄을 넘기지 않는 것을 권장
  • 하나의 Package에는 10개의 파일 이상 담지 않는 것을 권장
  • 가독성 측면에서도 중요함

7. 2개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.

  • 응집도와 캡슐화 정도를 높힘
  • 객체를 상관 관계가 있는 반(half)씩 나누거나, 인스턴스 변수를 둘 골라서 그로부터 하나의 객체를 만드는 등의 방법 활용하기

8. 일급 컬렉션을 쓴다.

  • 컬렉션을 포함한 클래스는 반드시 다른 멤버변수가 없어야
  • 일급 컬렉션(First Class Collection): Collection을 Wrapping하면서, Collection 외 다른 변수가 없는 클래스의 상태
  • 컬렉션의 모든 API 또한 open하지 ❌

9. getter/setter/property를 쓰지 않는다.

  • 묻지말고 시켜라
  • 한 객체의 상태에 기반한 모든 행동은 객체가 스스로 결정하도록
  • 특히 Setter의 사용은 금물
profile
₍ ᐢ. ̫ .ᐢ ₎

0개의 댓글