Skip to content

Latest commit

 

History

History
 
 

item76

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

가능한 한 실패 원자적으로 만들라.


호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지한다면, 그 객체는 여전히 정상적으로 사용할 수 있는 상태일 것이다.

객체를 원자적으로 만드는 방법.

  1. 불변객체로 설계하기

  2. 작업 수행에 앞서 매개 변수의 유효성을 검사하기

public Object pop() {
    //메서드를 사용하기전 매개변수의 유효성을 검사하여 실패할 경우,상태 변경을 막는다!
    if(size == 0)
        throw new EmptyStackException();
    
    Object result = elements[--size];
    elements[size] = null;
    return result;
}
  1. 객체의 임시 복사본에서 작업을 수행한 다음, 작업이 성공적으로 완료되면 원래 객체와 교체하기.

  2. 복구 코드를 작성하여 작업 전 상태로 되돌리기.(자주 쓰이지 않는 방법)