본문 바로가기

Program/IDE

이클립스, if~else~ 문과 boolean 변수를 통한 Dead Code 풍선 도움말 처리 방법.


아래 코드를 보면 'Dead code' 경고가 나옵니다.
이클립스 IDE 가 성능이 너무 좋아서 나오는 건데요. 이유가 다 있는 것이죠.
이런걸 무시하고 그냥 넘어가도 실제로 문제가 없기도 합니다만, 예외 상황이 발생한다면 대략 난감해집니다.
바로, 원인을 알 수 없는 런타임 오류가 나는 거죠.




일단, (위의 그림에서 'Dead code' 라고 풍선 도움말이 나오는 바람에 가려진 부분을 포함한) 원본은 아래와 같은 코드입니다.
response.sendRedirect("/"); 를 실행하면 현재의 .jsp 에서 더이상 진행이 되지 않고 Root 페이지로 이동합니다.
물론, 웹서버 설정에 따라 다른 반응이 나오긴 하겠지만 말입니다.
혹시나 sendRedirect 메소드가 실행된 다음에 이후의 문장이 실행되지나 않을까해서,
(간혹 Response has committed 와 같은 오류(?)가 발생하기도 하거든요. 이를테면 include 문장이 들어가든가 말이죠..)
return; 문을 넣은 것인데, 강제적으로 넣다 보니 선택의 여지가 없어서 컴파일러(적어도 이클립스)가 에러를 냅니다.
그래서, if(true) return; 으로 살짝 눈가리고 아웅 해 놓은 것인데요..
문제는.. 아래와 같은 경고 문구가 화면에 잔뜩 나오면,
진짜 중요한 경고 문구도 묻히게 되기 때문에.. 이런 경고는 없애 주어야 한다는 거죠.




그렇다면 해결 방법은..? 간단합니다. ㅋㅋ. "%>" 문장 뒤의 White Space 들을 지워주면 됩니다.
만약 그 뒤로도 무슨 문장들이 있다면 어떻게 할까요..? 그때는 또, 'Dead Code' 가 나옵니다. ㅠ.ㅠ




그러나, 역시.. 피해갈 방법이 있지요.
눈가리고 아옹 식의 방법 말고, 가장 정석적인 방법은..
가변적인 변수를 사용하는 겁니다. 아래 그림과 같이 boolean 변수에 true 값을 넣고,
if ~ else 문을 사용하면 'Dead code' 라는 경고는 없어지죠.
물론, if(bb) return; 이라 해도 됩니다. ㅋㅎ




결론을 적어 볼까요.. 일단 정석적인 방법이 있고, 정석으로 가면 코드가 길어지니..
간단하게 하기 위한 방법도 있으므로, 상황에 맞게 코딩을 하되..
최대한 예외상황이 나지 않도록, 코드를 쉽게 고칠 수 있도록 하자는 것입니다. ^^.
그냥 return; 문만 사용하더라도 이클립스가 알아 차리지 못하는 경우도 있습니다.
문장 블럭 안에 잡히는 경우 그렇죠..