2012-08-03 4 views
0
private static final Logger LOGGER = Logger.getLogger(AbstractDbClient.class); 

protected Connection connection; 


protected Connection connection; 

private static final Logger LOGGER = Logger.getLogger(AbstractDbClient.class); 

어떤 순서로 선언 필드에 대한 더 나은 무엇입니까? 일부 도서는 개인/공공/보호/등 그들을 두 번째 코드가 더 좋지만, 그것은 나쁜 것처럼 보인 경우 주문해야 지적했다. 포함 정적 최종 var 또는 정적 var? 어떤 규칙이 규칙인가?현장 declareing에 대한 더 나은

+1

오픈 소스 프로젝트에서 어떻게 이루어 졌는지 확인하십시오. 왜? 왜냐하면 코드를 공유하고 싶다면 (다른 사람이 사용하는 것처럼) 코드를 공유하는 것이 더 낫습니다. – Augusto

+0

오픈 소스 코드를 확인했지만 법률은 없었습니다. 모든 코더에는 고유 한 스타일이 있습니다. 일부 책들은 access-modifier에 의해 명령해야한다고 말하지만, 상수는 다른 사람의 것과 일치해야한다고 생각합니다. 접근 수정 자로 그룹화하십시오. – jiafu

답변

1

개인적으로 나는 모든 통계를 수업의 맨 위에두고 공개, 보호, 기본값, 개인 주문으로 모든 필드를 갖고 있습니다.

예를 들어

public static final Integer a; 
private static final Integer b; 

public Integer c; 
Integer d 
private Integer d; 

나는 또한 TEH 정적 및 비 정적 필드 사이에 줄을 추가하는 경향이있다.

그러나 의견의 문제입니다. 아마도 함께 일하는 동료에게 물어보십시오. 이런 종류의 일에 일관성을 갖는 것이 좋습니다.

4

일반적인 표준은 모든 공용 변수를 맨 위에 놓은 다음 보호 한 다음 비공개로 만드는 것입니다. 어떤 사람들은 클래스/정적 변수를 인스턴스 변수 앞에 놓았고, 어떤 사람들은 인스턴스 변수 앞에 놓았습니다.

새 코드를 작성하는 팀에서 일하는 경우 함께 모여 공통된 규칙을 결정하는 것이 가장 좋습니다. 추가하려는 기존 코드가 이미있는 경우이를 통해 이전 작성자가 따라 온 규칙을 파악하십시오. 같은 코드베이스에 스타일을 혼합하고 싶지는 않습니다.

6

난 당신의 일관성을 유지하는 것이 좋습니다,하지만 난이 쉽게 코드 및 디버그를 이해할 수 있습니다 그들이 설정 한 순서대로 필드를 배열하는 것을 선호합니다. IMHO.

static final fields 

final fields 

mutable fields. 
+1

다중 스레드 인 경우 많은 정보를 입력하십시오. 최종 필드 캐시는 필요 없습니다. 수정할 라인. 전반적으로 데이터 레이아웃은 동시성에있어 중요한 요소입니다. – bestsss

+0

가변 필드를 가능한 한 분명하게 보이게하는 이유는 이들을 그룹화하는 이유입니다. –

2

실제로 데이터 레이아웃에는 원하는대로 필드를 정렬하는 것 외에도 성능 속성이 있습니다. 내가 좋아하는 뭔가를 따르는 경향이 :

  • 정적 필드,

    • 정적 최종 필드를
    • 최종 필드
    • 사용 사례별로 그룹화
    • 수정 필드
    • 휘발성 필드

    때로는

    private field usedOnlyInFoo 
    method foo(){ 
    } 
    

    More on the topic 왜 데이터 레이아웃이 중요한가요? 배열/직접 버퍼 외에도 Java에서 데이터 레이아웃을 시행하는 공식적인 방법은 없지만 일반적으로 컴파일러 (JVM)는 필드를 선언 순서로 배치합니다.