코드

가독성을 위한 공백 추가

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의 자식 클래스처럼 보일 수 있다. 구분자로 숫자를 분리 또는 추출하는 기능이 핵심이니 클래스명에도 녹아들면 좋을 것 같다.

댓글남기기