인스턴스 변수 또는 클래스 변수를 타당한 이유없이 public으로 선언하지 마세요. 메소드 호출의 부작용으로 빈번히 발생하는 인스턴스 변수들을 명시적으로 설정하거나 가져올 필요가 없습니다.
적합한 public 인스턴스 변수의 한가지 예제는 클래스가 본질적으로 동작이 없는 데이터 구조인 경우입니다. 즉, 클래스 대신 struct
를 사용했다면(Java가 struct
를 지원하는 경우), 클래스의 인스턴스 변수를 public으로 선언하는 것이 적절합니다.
객체를 사용하여 클래스(static) 변수 또는 메서드에 접근하지 마세요. 대신 클래스 이름을 사용하십시오. 예를 들어:
classMethod(); // OK AClass.classMethod(); // OK anObject.classMethod(); // 사용하지 마세요
숫자 상수(리터럴)는 for
루프에서 카운터 값으로 나타날 수 있는 -1, 0 및 1을 제외하고 직접 코딩해서는 안 됩니다.
단일 문에서 동일한 값에 여러 개의 변수를 할당하지 마십시오. 읽기가 어렵습니다. 예를 들어:
fooBar.fChar = barFoo.Ichar='c'; //사용 금지
등호연산자 ( equality operator ) 와 혼동하기 쉬운 곳에서는 대입연산자 ( assignment operator )를 사용하지 마세요. 예를 들어:
if (c++ = d++) { // 사용 금지 ( Java가 허용하지 않음 ) ... }
위의 코드를 아래와 같이 작성합니다.
if ((c++ = d++) != 0) { ... }
런타임 성능을 개선하기 위해 포함된 할당을 사용하지 마십시오. 이것은 컴파일러의 작업입니다. 예를 들어:
d = (a=b+c)+r; // 사용 금지
위의 코드를 아래와 같이 작성합니다.
a = b + c; d = a + r;
일반적으로 연산자 우선 순위 문제를 피하기 위해 혼합 연산자가 포함된 표현식에서 중괄호를 자유롭게 사용하는 것이 좋습니다. 연산자 우선 순위가 명확해 보일지라도, 다른 프로그래머에게는 그렇지 않을 수 있습니다. 다른 프로그래머가 자신만큼 우선 순위를 알고 있다고 가정해서는 안 됩니다.
if ( a == b && c == d ) // 사용 금지 if ( (a == b) && ( c == d) ) // 사용 권장
프로그램의 구조가 의도하는 것과 일치하도록 하십시오. 예를 들어;
if ( booleanExpression ) { return true; } else { return false; }
상기 코드를 아래와 같이 작성합니다.
if ( booleanExpression ) { return booleanExpression; } else { return booelanExpression; }
비슷한 방식으로
if ( condition ) { return x; } return y;
항기 코드는 아래와 같이 작성합니다.
if ( condition ) { return (condition ? x : y ); }
이항 연산자 ( binary operator ) 를 포함하는 표현식은 삼항연산자의 ?:
연산자 이전에서는 괄호로 묶어야 합니다. 예를 들어:
(x >= 0) ? x : -x;
주석에 XXX
를 사용하여 가짜지만 작동하는 항목에 플래그를 지정하세요. FIXME
를 사용하여 가짜이고 문법에 맞지 않는 것을 표시하십시오.