
Today I Learned
객체지향 생활체조 원칙 9가지
1. 한 메서드에 오직 한 단계의 들여쓰기만 한다.
- 한 메서드에 하나의 일만 수행하도록 만든다
- 메서드는 맡은 일이 적을수록 재사용성이 높고 디버깅이 용이하기 때문
2. else 키워드를 쓰지 않는다.
- switch/case 구문을 포함한 분기 구문을 지양하여 코드를 간단명료하게
- if의 내부에 return을 넣는 early return문을 활용하기
- optimistic : 오류를 걸러내는 if 조건이 있으면, 나머지 로직은 if 이후의 기본 시나리오를 따르게 하는 것
- defensive : 기본 시나리오를 조건에 지정한 후 조건이 충족되지 않으면 오류 상태를 반환
3. 모든 원시값과 문자열을 포장(wrap)한다.
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의 사용은 금물