2014-02-26 5 views
1

Eclipse의 형식 및 정리 작업을 사용하여 작업중인 700 개 이상의 Java 파일을 정리/포맷하려고합니다. 상사는이 모든 정리/형식화로 인해 런타임 동작이 변경 될 수 있다고 우려하고 있습니다.Eclipse의 Java 형식/정리 작업이 런타임 동작을 변경할 수 있습니까?

런타임 문제를 해결할 수있는 유일한 정리/형식 환경 설정은 "정리/코드/멤버/정렬 멤버/모든 멤버 정렬"이며 Eclipse에서 이에 대해 경고합니다.

제 질문은 위에서 언급 한 환경 설정 외에 다른 모든 Eclipse 정리 및 형식 환경 설정이 안전합니까? 아니면 정리/형식을 수행하여 프로그램의 런타임 동작이 변경된 상황을 본 사람이 있습니까?

감사합니다.

+0

의 3 초기화 치울 것 같은 J의 값을 선언 순서를 변경합니다. 런타임 동작을 변경할 수 있기 때문에가 아니라 VCS (버전 제어 시스템)의 변경 기록을 다시 포맷하기 때문에. – ibre5041

+0

나는 언급 했어야했다. 이로 인해 발생할 수있는 비교/비교 연산의 문제점을 이해합니다. 그러나 우리는 우리 작업에서 새로운 VCS로 바꾸려하고 있습니다. 따라서 잃을 역사는 없습니다. 사람들이 두 개의 VCS를 통해 파일을 수동으로 비교/비교하려고하지만 그 코드가 우리가 해당 히트를 잡을 준비가되어있는 순간에있는 상태라면 여전히 문제가 있습니다. 감사. – jirish

+0

이러한 변경 사항으로 인해 문제가 해결되지 않으면 문서화되지 않은 동작에 종속되어 있기 때문입니다. 그 말은 ... 내 경험상 멤버를 정렬하면 코드를 개선하는 것보다 유용한 정보 (예 : 의미있는 그룹화)를 제거 할 가능성이 높습니다. 당신이 그렇게하는 좋은 이유가 없다면, 나는하지 않을 것입니다. Eclipse는 실제로 코드를 정렬 할 필요없이 멤버의 정렬 된 목록을 표시 할 수 있습니다. – keshlam

답변

1

비록 필드 선언이나 초기화 프로그램의 순서를 변경하면 런타임에 변경이 발생할 수 있습니다. 이 예제를 보자

public class MyClass { 
    private static int I; 
    private static int J = I + 1; 

    static { 
     I = 2; 
    } 
} 

당신이 그렇게하지 마십시오 대신 1

public class MyClass { 
    private static int I; 

    static { 
     I = 2; 
    } 

    private static int J = I + 1; 
} 
+0

안녕 Matt. 순서 변경이 어떻게 동작을 변경할 수 있는지에 대한 유용한 예. 필자는 import 문을 재정렬하는 것을 제외하고 형식/정리로 어떤 종류의 리다 레이팅을하지 않을 것입니다. 다른 형식/정리 환경 설정으로 인해 문제가 발생할 수 있는지 궁금합니다. 사용되지 않는 private/local 변수를 제거하고 모든 if/for/else/while 문에 중괄호를 추가하고 모든 표현식을 괄호 안에 넣은 다음 불필요한 캐스트를 제거하는 등의 작업을합니다. – jirish

+0

대부분의 재정렬 선언은 의미 또는 런타임에 영향을 미치지 않습니다. 행동. 예를 들어, 재정렬 메소드 선언은 그런 부작용이 없다. 나는 일반적으로 그것에 대해 크게 걱정하지는 않지만 고려해야 할 것이 있습니다. –

관련 문제