Search Results for '안티 패턴'

1 POSTS

  1. 2007.08.30 Google Singleton Detector 6

Google Singleton Detector

Posted 2007. 8. 30. 16:27
구글이 Google Singleton Detector(이하 GSD)라는 재미있는 프로젝트를 내놨더군요. GSD는 자바 바이트코드를 분석해 싱글톤 패턴을 찾아주는 프로그램입니다. 싱글톤을 식별해 내고, 싱글톤에 의존적인 클래스를 그래프 형태로 뿌려주기 때문에 프로그램 내의 글로벌 상태와 이에 의존적인 코드를 쉽게 찾아낼 수 있게 됩니다.

GSD는 싱글톤을 타입에 따라서 Singleton(우리가 일반적으로 알고 있는 자바의 singleton 패턴), Hingleton(helper 클래스를 이용하면 singleton), Mingleton(method signleton), Fingleton(public static field 사용하는 field singleton)으로 구분하고 있습니다. 관련된 내용은 Understanding the Graph를 참고하세요.

이 프로그램의 목적은 싱글톤 패턴을 찾아서 제거하려는 데 있습니다. 구글에서는 싱글톤 패턴을 제거해야 하는 아주 해로운 패턴으로 판단했나 봅니다. 프로젝트 페이지를 읽어보시면, 싱글톤은 테스트를 어렵게 만들고, 디자인의 문제를 숨기는 역할을 한다고 이야기하고 있습니다. 사실 싱글톤 패턴은 처음 디자인 패턴을 접한 분들이 이해하기도 쉽고, 기존 코드에 적용하기도 쉬워서 애용(혹은 오용) 되어 왔는데, 이제는 자동화된 도구를 만들어서라도 제거하려는 안티 패턴(anti pattern)이 되고 말았군요.

결국 어떤 패턴이던지 어떻게 사용하느냐의 문제인데, xxxManager, xxxRegistry 등의 클래스가 범람하고 모든 클래스가 싱글톤이 되어서 복잡하게 얽혀 있으면 전역 변수 사용과 다를 바가 없겠지요. 반대로 정말 시스템이 하나만 존재해야 하는 인스턴스의 경우 싱글톤이 필요할 것입니다. Bruce Eckel은 자신의 웹로그에 남긴 Singleton Considered Harmful?이라는 글에서 싱글톤 패턴 자체는 나쁘지 않다는 견해를 밝혔군요.

어쨌거나, 자바로 프로젝트 하시는 분들은 한 번 돌려보시고, 프로그램 내에 전역 변수가 어떻게 얽혀 있는지 한 번 보시는 것도 좋을 것 같습니다.