'정적분석'에 해당되는 글 1건




AddEmptyString


우선순위 : 3

The conversion of literals to strings by concatenating them with empty strings is inefficient. It is much better to use one of the type-specific toString() methods instead.

 

문자열로 형변환을 할 때 빈 문자열로 + 연산을 하는 것은 비효율적이다.
이럴 경우에는 각 타입별로 구현된 toString() 메소드를 이용하는 것이
더 낫다.

 

샘플 코드



AvoidArrayLoops


우선순위 : 3

Instead of manually copying data between two arrays, use the efficient System.arraycopy method instead.

 

두 배열간에 복사를 할 때는 루프를 통해 수동적으로 하지 말고
System.arraycopy를 이용하는 것이 더 효율적이다.

 

샘플 코드

 

부연설명

 

System.arraycopy 사용법
System.arraycopy는 다음과 같은 5개의 인자를 받는다.

 

Object src : 복사할 원본 소스 배열
int srcPos : 소스에서 복사를 시작할 index
Object dest : 소스를 복사할 대상 배열
int destPos : 대상 배열에서 쓰기 시작할 index
int length : 원본에서 몇개의 요소를 읽어올지에 대한 길이

 

예제

결과

destStrArr1 : null
destStrArr1 : null
destStrArr1 : 요소1
destStrArr1 : 요소2
destStrArr1 : null

=======================================

destStrArr2 : 요소1
destStrArr2 : 요소2
destStrArr2 : 요소3
destStrArr2 : 요소4
destStrArr2 : 요소5




RedundantFieldInitializer


우선순위 : 3

Java will initialize fields with known default values so any explicit initialization of those same defaults is redundant and results in a larger class file (approximately three additional bytecode instructions per field).

 

자바의 멤버 변수들은 잘 알려진 값으로 자동 초기화 되므로 명시적으로 이러한
기본값으로 초기화 할 필요가 없으며 초기화할 경우 오히려 용량만 많이 차지하게 된다.

 

샘플 코드

 

부연 설명

아래 추가 샘플코드에 보면 FieldTest의 멤버변수들인 b,s,i,l,d,f,o 등은
아무런 초기화를 하지 않았지만 실제로 프린트를 해보면 기본값일이 출력되는 것을
알 수 있다.

 

FieldTest.java

PMDTestMain.java

 

결과

b = false
s = null
i = 0
l = 0
d = 0.0
f = 0.0
o = null


블로그 이미지

마즈다

이제 반백이 되었지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

댓글을 달아 주세요