2011년 5월 25일 수요일

Null Flag(널 플레그)

* 패턴 이름 : 널 플래그
* 증 상 : 예외적인 상황에 대해 널 값으로 그 여부를 알 수 있도록 하는 코드에서 NullPointerException이 발생한다.
* 원 인 : 메소드를 호출하는 측에서 반환 값으로 사용되는 널 포인터를 제대로 검사하지 않아서이다.
* 해결책과 예방책 : 예외적인 상황에 대해서는 널을 반환하는 대신 예외를 발생시킨다.
나쁜 코드
public Object Next() {
 try{
  return internal.readLine();
 } catch (IOException e) {
  System.out.println(e.toString());
  return null; ----> 버그패턴 부분!
 }
}

변경된 코드
public Object Next() {
 try {
  String result = internal.readLine();
  if(result == null) {
   throw new NoSuchElementException();
  } else {
   return result;
  }
 } catch (IOException e) {
  throw new NoSuchElementException(e.toString());
 }
}

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...