2013/01/18 17:31

자바 기본 룰셋. JAVA



코드프리즘이라는 코드인스펙션 툴에서 점검때 사용하는
자바 기본 룰셋이 있는데,
자바 코딩에 있어서
정말 기본적인 내용을 담고 있다.

물론 논란의 여지가 있는게 몇개 있긴 하지만,
그건 커스터마이징을 적절히 해서 사용하리라 생각하고.. 

내가 좀 뜻밖이거다, 아 그렇구나 싶은거만 몇개
붉은색으로 표시해 봤다..

No

( 자바 )

1

Catch 문에서 Throwable 객체 사용 금지

2

Exception 처리 순서

3

Finally Block 내에서 throw 사용 금지

4

String 값으로 Boolean 인스턴스 생성 금지

5

String 값으로 String 인스턴스 생성 금지

6

String 객체에 대해 toString() 사용 금지

7

StringBuffer 선언 시 초기값 할당 권장

8

System.exit() 사용 금지

9

Thread.run() 사용 금지

10

super.clone() 호출 없는 clone() 메소드 재정의 금지

11

synchronized this lock으로 쓰이는지 확인

12

가변 파라미터 사용 금지

13

동일한 변수 대입 금지

14

배열 파라미터를 필드 변수에 직접 할당 금지

15

필드에 StirngBuffer 사용 금지

16

혼동된 Loop 조건 변수 조작 금지

17

3회 이상 String Concat 사용 금지

18

Empty Finally 문 사용 금지

19

Final 필드는 반드시 Static으로 선언해야 함

20

For 문의 조건에서 함수 호출 금지

21

Loop 문 내에서 다중 데이터 저장 금지

22

Map/List 생성 시 반드시 초기화 크기 지정해야 함

23

Nested if 과다 사용 금지

24

Nested synchronized 사용 금지

25

Object 비교시 '==' 연산자 사용 금지

26

Object.finallize 사용  금지

27

ResultSet에서 index 0 참조 금지

28

Singleton 사용 권장

29

Static initialzer만 사용

30

String 타입의 멤버 변수는 반드시 static으로 선언해야 함

31

Thread.stop(), Thread.suspend() 사용 금지

32

catch 문 내의 미처리 Exception 금지

33

catch 문에서 instanceof 사용 금지

34

equals() 정의 객체에 hashCode() 없음

35

equals()에서 Null 비교 금지

36

for 문에서 제어 변수 변경 금지

37

getName()을 사용한 Class 비교 금지

38

printStackTrace() 사용 금지

39

while 문 안에서 sleep() 메소드 사용 금지

40

동일한 클래스 명과 멤버 필드 명 사용 금지

41

동일한 필드명과 메소드명 사용 금지

42

메소드 synchronized 금지

43

변수 할당 시 ! (not) 사용 금지

44

비효율적인 StringBuffer 사용 금지

45

상수는 항상 비교문의 왼쪽에 배치해야 함

46

연산에 대입문 사용 금지

47

종료 조건 없는 For 문 사용 금지

48

Boolean 값으로 Boolean 인스턴스 생성 금지

49

Empty Catch 사용 금지

50

Empty If 문 사용 금지

51

Empty Loop 문 사용 금지

52

Empty Static Block 사용 금지

53

Empty String 문자 더하기 연산 금지

54

Empty Switch 문 사용 금지

55

Empty Synchronize Block 사용 금지

56

Empty Try Block 사용 금지

57

Finally 블럭에서  return 또는 throw 사용 금지

58

Garbage collection 사용 금지

59

Loop 문 내에서 상수 할당 금지

60

Loop에 빈 조건 사용 금지

61

NULL 객체에 대한 비교 금지

62

Nested try 사용 금지

63

Primitive 타입을 스트링으로 변환시 New 사용 금지

64

String 변수의 equals() 사용 금지

65

String 비교 시  '==' 연산자 사용 금지

66

System.err 사용 금지

67

System.out 사용 금지

68

True Loop에서 No break 금지

69

switch 문에서 No break 금지

70

로컬 변수에 대해 Final 사용 금지

71

무조건적인 IF문의 사용 금지

72

불필요한 Final Modifier 사용 금지

73

불필요한 Return 문 사용 금지

74

불필요한 생성자 사용 금지

75

제어문에 중괄호 사용 권장

76

파라미터로 사용된 변수에 값 할당 금지

77

파일 스트림보다 버퍼 스트림 사용 권장

78

Empty String 인스턴스 생성 금지

79

DB자원 해제 검사

80

Error 생성/상속 금지

81

Exception 생성/상속 금지

82

File 자원 해제 검사

83

Map/List Static 필드로 선언 금지

84

RuntimeException 생성/상속 금지

85

Socket 자원 해제 검사

86

Thread 상속/생성 금지

87

Throwable 생성/상속 금지

88

import 문에 * 사용 금지

89

미참조 로컬 변수 정의 금지

90

미참조 메소드 정의 금지

91

미참조 파라미터 정의 금지

92

미참조 필드 정의 금지



올해부터는 라이센스비용 때문에
pmd로 갈아탔지만,, 암튼 둘다 성능은 비슷한 듯하다.. 

수시로 코드 인스펙션이나 동료검토를 통해서
나의 코드를 점검해 보는건 내 코딩실력을 높이는 
아주 효과적이고도 빠른 방법이라는거,,
다시한번 remind..

덧글

  • 2013/04/01 15:11 # 답글 비공개

    비공개 덧글입니다.
  • 말근우슴 2013/04/01 16:02 # 답글

    네, 알겠습니다.
    삭제 조치 하였습니다..
    내용도 문제가 되신다면 내리도록 하지요..
댓글 입력 영역