자바 정규식 Pattern.matcher는 상수화 시키자

min·2021년 12월 11일
0

참고
https://velog.io/@edwin/JAVA-%EC%A0%95%EA%B7%9C%EC%8B%9D-%EC%84%B1%EB%8A%A5%EC%97%90-%EB%8C%80%ED%95%B4-Pattern.matcher-VS-String.matches

정규식을 이용하는 코드를 짰는데 고정적으로 사용하는 정규식에 대하여 Pattern을 상수화 시키는게 좋다는 피드백을 받았다.

before

private static final String REG_EXP = "//(.)\n(.*)";

public String[] splitExpression(String expression) {
	Matcher matcher = Pattern.compile(REG_EXP).matcher(expression);
	String delimiter = TOKEN_DELIMITER;

    if (matcher.find()) {
		delimiter = matcher.group(DELIMITER_GROUP_NUMBER);
		expression = matcher.group(EXPRESSION_GROUP_NUMBER);
	}

	return expression.split(delimiter);
}
	

성능을 개선하기 위해서는 정규식 표현을 어플리케이션 시작 전에 Complie 시켜놓고 재사용하는게 좋다고 한다.

after

private final Pattern parretn = Pattern.compile("//(.)\n(.*)");

public String[] splitExpression(String expression) {
	Matcher matcher = parretn.matcher(expression);
	String delimiter = TOKEN_DELIMITER;

    if (matcher.find()) {
		delimiter = matcher.group(DELIMITER_GROUP_NUMBER);
		expression = matcher.group(EXPRESSION_GROUP_NUMBER);
	}

	return expression.split(delimiter);
}

으로 변경해 주었다.

그리고 추가적으로 staticfinal을 그냥 짝꿍처럼 계속 같이 사용하고 있었는데 이에 대한 부분도 추가적으로 생각 할 수 있었다. 이건 다음 글에 옮겨 적어야지

다음글
https://velog.io/@minchoi/%EC%9E%90%EB%B0%94-static%EA%B3%BC-final%EC%9D%84-%EC%9E%98-%EC%83%9D%EA%B0%81%ED%95%98%EA%B3%A0-%EC%82%AC%EC%9A%A9%ED%95%98%EC%9E%90

profile
발등에 불이 따뜻하다..

0개의 댓글