Java

[Java] 왜 자바에서는 static 사용을 지양해야 하는가?

Razelo 2021. 1. 5. 17:28

왜 자바에서는 static의 사용을 지양해야 하는가에 대해서 알아보자. 

 

static 변수는 전역 상태이다. 그런데 global state는 추론과 테스트가 매우 까다롭다고 한다.

 

이 static 변수가 코드의 여러 부분에서 영향을 받을 수 있는데 이 변화를 모두 추적하기가 까다로운 셈이다. 그런데 이걸 객체화해서 인스턴스로 생성해서 사용하면 테스트 도중에 그 변수가 어떤 상태인지 알기 쉽기 때문에 인스턴스화가 좀 더 좋다고 한다. 

 

결국에는 테스트 시에 추적이 어렵기 때문에  static을 자주 쓰지 말라는 것이다. 

 

또한 static은 객체 지향적이지 않다고 한다. static 변수는 특히 캡슐화의 원칙에 위배된다고 한다. 

 

static이 scope를 고려할 필요없이 global하게 사용될 수 있기 때문에 절차지향에서는 좋을지는 몰라도 객체지향의 개념에는 좋지 않다고 한다. 

 

또한 너무 많은 static 변수를 사용하면 메모리 회수를 할 수 없어서 JVM이 메모리 부족을 겪게 될 수도 있다고 한다.  왜냐면 static은 프로그램 실행 중 계속 살아있어서 관련된 부분의 작업이 끝나도 static 변수가 점유한 메모리가 회수되지 않기 때문이다. 

 

그리고 static은 재사용성이 떨어진다고 한다. interface를 구현하는데 사용될 수 없기 때문이다. 

 

이러한 이유 때문에 static을 되도록이면 지양하는 것이 좋다고 한다. 

 

그냥 static 대신에 singleton 을 쓰자. 


아래 블로그에서 많은 도움을 받았습니다.

 

감사합니다. 

 

https://milhouse93.tistory.com/50?category=749262

 

Java(왜 자바에서 static의 사용을 지양해야 하는가?)

자바에서 데이터를 가공하거나 특정 메서드를 수행할 때 새로운 클래스를 만들어서 이를 인스턴스화 해서 쓸건지 아니면 static 으로 쓸건지 고민하게 될 때가 있다. 사실 후자는 객체지향적 관

milhouse93.tistory.com

 

반응형