2016-06-09 4 views
1

클래스의 정적 필드에서 데이터베이스 연결 등과 같은 리소스를 여는 것은 좋지 않은 일입니까?정적 블록을 사용하여 Java에서 리소스 할당

class ClassName { 
    static { 
     //open database connection 
    } 
} 

참고 : 여러 리소스에서 동일한 리소스를 사용하고 있지 않습니다. 그것은 atmost 하나의 클래스에서만 사용됩니다.

기본적으로 리소스 할당 오류로 인해 프로그램이 중간에서 오류가 발생하지 않도록하기 위해이 작업을 수행하고 있습니다.

편집 : 응용 프로그램 개발 (연수생)이 처음입니다. 이전 답변 대부분을 읽었으므로 내가 물어 본 질문 (우수 사례)과 관련된 내용을 찾을 수 없습니다.

+0

열린 리소스를 어디에서 닫으시겠습니까? – khelwood

+0

우리는 정적 메서드를 사용하여 DB에 대한 연결을 만듭니다. 객체 당 생성 된 연결을 생성하는 것보다 훨씬 깔끔하고 빠릅니다. – nafas

+0

괜찮습니까? 또는 나쁜 습관입니다. 나는 응용 프로그램 개발 (연수생)을 처음 사용합니다. –

답변

3

이것은 확실히 나쁜 습관입니다.

정적 좋은 OO 디자인에 이상이 있음을 유의하십시오 (결국, 정적는 변장에 절차 적 프로그래밍 번역).

다른 말로하면 정적 초기화에서 데이터베이스 설정 준비만큼 필수적이지 않은 것을 원합니다. 의미 : 클래스에 특정 추상화를 추가해야 할 가능성이 가장 높습니다. 이러한 코드에 직접 의존하지 마십시오.

너머 : 특정 시점에서 특정 수준의 제어가 필요하다고 생각하면 어떻게됩니까? 그 "자원"이 당신의 수업에 정적으로 소유된다면 그것은 거의 불가능할 것입니다.

물론 클래스가 정적 코드에 의존한다면 ... 기본적으로 단위 테스트를 어렵게 만듭니다. 정적 인을 사용하지 않는 것은 "테스트 가능한 코드 작성 방법"학교에서 강의 1 번과 같습니다.