http://www.mimul.com/pebble/default/2009/12/04/1259937540000.html
코딩을 하다가 보면 워닝이나 에러등이 프로젝트내에서 보이면 대부분의 개발자는 없앨려고 할 것입니다. 지저분하게 코딩을 하지 않기 위함은 물론이거니와 Error나 Warning같은 것을 그냥 두고 코딩을 할 경우 코딩의 신뢰성에 많은 의협이 되니깐요. 또한, 그런 코딩 자세가 버그를 양산할 수 있으므로 지양을 할 것입니다. 그래서 오늘은 에러는 다잡는데, Warning은 그대로 두시는 분들이 계셔서 깔끔하게 정리하는 방법들을 공유합니다.
가장 큰 포인트는 아래 방법들은 회피하는 방법이 많습니다. 근본적인 해결방안은 Warning을 발생시키지 않는 것입니다. 회피하는 것보다는....1. Avoid raw types
- 사유 : List, Map.Entry, HashMap 등에서 불필요한 캐스팅을 막기 위해 Generics에서 parametric types 을 지정해 주도록 하기 위해 Warning을 띄움
- 해결책
. List<String>, Map.Entry<String, String> 등으로 명시적 타입으로 지정함
2. Type safety: Unchecked cast
- 사유 : Generics을 사용해서 타입을 지정했지만 해당 값이 Object일 경우 "Type safety: Unchecked cast"라는 Warning을 남김
- 해결책 : 정확한 타입 캐스팅을 지정하거나 안되면 아래와 같이 Annotation을 해당 문 위에 적용함
. 근본적인 대책은 명시적인 타입 사용을 원칙으로 함
. @SuppressWarnings (value="unchecked") 혹은 @SuppressWarnings("unchecked")
3. Serializable class does not declare
- 사유 : implements java.io.Serializable한 클래스나 해당 클래스를 상속받은 클래서에서는 serialVersionUID 상수를 선언해줘야 deserialization(serialization 했던 객체를 복구하는 과정)과정에서 예상하지 못한 InvalidClassExceptions을 유발성을 제거할 수 있음
- 해결책
. serialVersionUID 선언(public static final long serialVersionUID = 24362462L;)
. 그외 @SuppressWarnings("serial")
4. deprecated code
- 사유 : 더이상 사용치말라는 함수에 @Deprecated를 사용하여 Warning을 뿌려줌
- 해결책
. 기본적으로 해당 함수는 사용하지 않는것이 원칙임
. 부득이 사용해야할 경우 @SuppressWarnings("deprecation")
5. [fallthrough] possible fall-through into case
- 사유 : switch문에서 break문이 빠져있을 경우 일반적으로 컴파일하면 Warning이 안뜨는데 컴파일 옵션에서 -Xlint:fallthrough 를 주고 컴파일하면 Warning이뜸
- 해결책
. 부득이 사용할 경우 @SuppressWarnings("fallthrough")
[참고사항 : Sun JDK (1.6) 에서 지원하는 Warnings]
- deprecation : Check for use of depreciated items.
- unchecked : Give more detail for unchecked conversion warnings that are mandated by the Java Language Specification.
- serial : Warn about missing serialVersionUID definitions on serializable classes.
- finally : Warn about finally clauses that cannot complete normally.
- fallthrough : Check switch blocks for fall-through cases and provide a warning message for any that are found.
- path : Check for a nonexistent path in environment paths (such as classpath).
반응형
'차근차근 > JAVA JSP' 카테고리의 다른 글
jsp alert창 띄우는것 질문드립니다. (0) | 2014.10.29 |
---|---|
syntax error insert assignmentoperator expression to complete expression (0) | 2014.10.29 |
제네릭 형변환 질문.. (0) | 2014.10.29 |
Spring Controller에서 뷰(JSP) 페이지로 값 넘기기 (0) | 2014.10.28 |
스프링 프레임 워크 구조 ( Spring framework 구조 ) (0) | 2014.10.28 |