더북(TheBook)

예제 3을 위한 리팩토링 제안

스택 추적 예제라는 점에서 리팩토링 후보는 먼저 문자열로 스택 추적 요소를 인코딩한 후 이를 공개하는 대신, 스택 추적 요소를 프로그래밍적으로 공개하는 방식이다. 자바 API는 버전 1.4부터 StackTraceElement 클래스를 도입하여 스택 추적 과정에서 프로그래밍적으로 접근할 수 있게 개선했다. 새로운 메서드를 추가했지만, printStackTrace() 메서드와 스택 추적 형식은 기존 클라이언트를 지원하려고 계속 유지하고 있다는 점에 주목하자.

 


public class Throwable {
  public void printStackTrace();
  public StackTraceElement[] getStackTrace(); // 1.4부터
  // 다른 메서드는 생략했다.
}

 

StackTraceElement는 원래 설계에서 ‘누락된 추상화’였다. 자바 1.4에서는 다음과 같이 도입했다.

 


public final class StackTraceElement {
  public String getFileName();
  public int getLineNumber();
  public String getClassName();
  public String getMethodName();
  public boolean isNativeMethod();
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.