문자열을 조합할 땐 StringBuffer를 써요

문자열을 조합할 땐 StringBuffer를 써요

use_string_buffers 규칙에 대해 알아볼게요.

출처: Use string buffers to compose strings.

본문

여러 조각을 이어 붙여 문자열을 만들 때, 대부분의 경우 StringBuffer를 쓰는 걸 선호해요. 성능이 더 좋기 때문이죠.

BAD:

String foo() {
  final buffer = '';
  for (int i = 0; i < 10; i++) {
    buffer += 'a'; // LINT
  }
  return buffer;
}

GOOD:

String foo() {
  final buffer = StringBuffer();
  for (int i = 0; i < 10; i++) {
    buffer.write('a');
  }
  return buffer.toString();
}

반복문 안에서 +=로 계속 이어 붙이는 방식은 매번 새로운 문자열을 만들어 내요. 반면 StringBuffer는 조각을 모아 두었다가 toString()으로 한 번에 문자열을 만들어 주기 때문에 훨씬 효율적이랍니다.

활성화

use_string_buffers 규칙을 켜려면 analysis_options.yaml 파일의 linter > rules 아래에 추가해요:

linter:
  rules:
    - use_string_buffers

YAML map 구문으로 lint 규칙을 설정하는 경우엔 linter > rules 아래에 use_string_buffers: true를 넣으면 돼요:

linter:
  rules:
    use_string_buffers: true

더 알아보기

  • 문자열이 정말 몇 개 없고 단순한 경우엔 StringBuffer까지 쓸 필요는 없지만, 반복문처럼 여러 번 이어 붙이는 상황이라면 StringBuffer가 확실히 유리해요.