[java Anti Pattern Series] 30.evadeantipattern
February 13, 2025
Evade anti-pattern
1. Singleton
- 유용할 수 있지만 오용되면 크리티컬하다.
- 최대한 안쓰는 것을 추천하고 최대한 의존성 주입으로 종속성을 관리하고, 필요할 때 인스턴스 생성하는 방향으로 고려
- 꼭 써야 한다면 thread-safe 한 방향으로
2. god object
- 너무 긴밀하게 결합된 클래스
- 책임 소재를 명확히하고 composition과 delegate를 사용하자.
3. magicNumber
- 명확한 설명 없이 코드 베이스 전체에서 사용하는 하드 코딩된 값(숫자)을 의미
- 명명된 상수나 열거형을 사용
4. modifiable object
- 생성 후 객체를 조작하는 경우를 의미한다.
- 멀티 쓰레드에서 특히나 문제가 될 수 있다.
- 최대한 불변성을 선호하자 필요하다면 방어적 복사, 동기화를 사용하자
5. hard coupling
- 서로 강하게 의존해서 다른 클래스에 영향을 주지 않고는 클래스 변경이 어려운 경우를 의미한다.
- 인터페이스를 사용해서 결합도를 낮추고 분리하는 방향으로 진행하자.
- 관심사를 더 분리해보자.
6. abuse inheritance
- 상속을 과도하게 사용하면 이해하기 어렵고 유지 관리하기 어려워진다.
- 상속은 클래스 간의 긴밀한 결합을 만들고 하위 클래스 동작을 변경하기 어렵게 만든다.
- 상속보다는 comopsition을 사용하자.