bong-u/til

Java - 이중 중괄호와 Anti-Pattern

수정일 : 2024-11-15

기존 코드

1Map<String, Object> map = new HashMap<>();
2map.put("customerId", customer.getCustomerId().toString().getBytes());
3map.put("name", customer.getName());
4map.put("email", customer.getEmail());
5map.put("createdAt", Timestamp.valueOf(customer.getCreatedAt()));
6return map;

Double Brace Initialization 적용 후

1return new HashMap<>() {{
2    put("customerId", customer.getCustomerId().toString().getBytes());
3    put("name", customer.getName());
4    put("email", customer.getEmail());
5    put("createdAt", Timestamp.valueOf(customer.getCreatedAt()));
6}};

효과

  • 장점
    • 코드가 가독성이 좋아진다
  • 단점
    • 추가로 익명 클래스를 사용한다 -> 메모리 추가 사용

    • 인스터스 및 개체에 대한 숨겨진 참조를 가진다 -> Memory Leak 유발 가능

    • -> 안티패턴으로 간주된다

      안티패턴 (Anti-pattern)

      실제 많이 사용되는 패턴이지만 비효율적이거나 비생산적이기 때문에 지양되는 패턴

결론

득보다 실이 많다, 사용하지 말자