[개발 기록] tdd 문자열 덧셈 계산기 피드백
가독성을 위한 공백 추가
public static final String DEFAULT_DELIMITER = ",|:";
public static final Pattern DELLIMITER_PATTERN = Pattern.compile("//(.)\n(.*)");
private final String delimiter;
public Delimiter(String target)
가독성을 위한 상수 치환
private String parsingDelimiter(String target) {
Matcher matcher = DELLIMITER_PATTERN.matcher(target);
if (matcher.find()) {
return Pattern.quote(matcher.group(1)); <---- 이 부분의 '1'이 문제이다!
상수는 왜 늘 static일까?
상수로 치환하다가 문득 궁금해졌습니다.
private static final int DELIMITER_INDEX = 1;
무의식적으로 상수에 static을 붙이고 있더라구요. 😲
그럼 왜 상수는 static이어야 하는 걸까요?
static은 클래스 로더가 처음 클래스를 메모리에 올릴 때 같이 올라갑니다. 즉, 상수는 늘 Method 영역에 상주합니다. 객체가 생성 될 때 Heap 영역에 올라가게 되는데 바뀌지 않는 값인 상수를 매번 Heap에 올릴 필요가 없다 가 결론입니다.
클래스명을 정확히 하라
public class StringDelimiter
public class Delimiter
StringDelimiter
는 자칫 잘못하면 Delimiter
의 자식 클래스처럼 보일 수 있다.
구분자로 숫자를 분리 또는 추출하는 기능이 핵심이니 클래스명에도 녹아들면 좋을 것 같다.
댓글남기기