[Design Pattern] 5. 안티 패턴 (Anti-Pattern)

김민경·2025년 6월 23일

Design Pattern

목록 보기
8/9
post-thumbnail

안티 패턴

처음에는 좋아 보이지만, 결국 장기적으로 문제를 일으키는 설계 또는 구현 방식

즉, 하면 안되는 비효율적인 해결 방법

  • 처음엔 합리적이거나 편리해 보여서 자주 선택되는 방법이지만, 시간이 지나면 유지보수, 성능, 확장성 등에서 심각한 문제를 발생시키는 패턴
  • 어떤 선택이 장기적으로 시스템을 망가뜨리는지 미리 알기 위해서 좋은 코드뿐 아니라 나쁜 코드도 학습하는 것이 중요

대표적인 안티 패턴

1. Spaghetti Code (스파게티 코드)

  • 코드가 뒤엉켜서 모듈화가 안 됨

  • 무분별한 코드 중복, 의존성 꼬임 -> 코드가 복잡해지고 읽기 어려움

    ex) 하나의 클래스에 모든 기능 몰아넣기

2. God Object (신 객체)

  • 하나의 객체가 모든 책임을 가지고 있는 초대형 클래스

    ex) Controller, Service, DB 작업을 모두 담당하는 하나의 클래스

3. Golden Hammer (황금 망치)

  • 모든 문제를 하나의 기술/패턴으로 해결하려고 하는 것

    ex) CRUD 모든 기능을 단일 쿼리 빌더로만 작성

4. Gargo Cult Programming (의식적 코딩)

  • 코드의 의미를 이해하지 않고 관습적으로 붙여 쓰는 것

    ex) try-catch를 무조건 붙이기, @Transactional 남발

5. Magic Numbers (매직 넘버)

  • 코드 내에 의미를 알 수 없는 숫자를 직접 사용

    ex) if (userType==3) {...} 에서 3이 무슨 의미인지 모르는 경우

특징

  • 개발 초기에 빠른 결과를 낼 수 있고, 특정 상황에서는 임시방편으로 유용할 수도 있음

  • 하지만 시간이 지날수록 유지보수성 최악, 버그 발생 확률 증가
    시스템 확장, 테스트, 리팩토링이 매우 어려워짐

결론

개발 과정에서 무심코 자주 발생하는 잘못된 습관이나 설계로, 당장은 좋아 보여도 결국 시스템을 망치게 만드는 위험한 습관
안티 패턴을 인지하고 미리 피하거나 리팩토링으로 제거하여 코드 품질을 지켜야 함.

우선 나부터 ... 😢

profile
뭐든 기록할 수 있도록

0개의 댓글