use_string_buffers 진단: 문자열을 조합할 땐 '+'보다 StringBuffer를 써요

use_string_buffers 진단: 문자열을 조합할 땐 '+'보다 StringBuffer를 써요

Dart 분석기가 내보내는 진단에는 이름이 있어요. use_string_buffers반복문 안에서 +로 문자열을 이어 붙일 때 분석기가 알려주는 린트 규칙이에요. 반복적으로 문자열을 연결하면 성능이 나빠지니까 StringBuffer를 쓰는 게 더 좋아요.

출처: use_string_buffers

본문

설명

분석기는 반복문 안에서 StringBuffer를 쓰지 않고 값을 문자열에 계속 이어 붙일 때 이 진단을 만들어요.

문자열은 불변(immutable)이라서 +로 연결할 때마다 새로운 문자열이 만들어져요. 반복문 안에서 이를 반복하면 그만큼 메모리와 시간이 낭비되죠. StringBuffer는 버퍼에 쌓아 두었다가 한 번에 문자열로 만들어 주니까 훨씬 효율적이에요.

예시

다음 코드는 문자열 resultfor 반복문 안에서 반복적으로 이어 붙여서 만들기 때문에 이 진단을 만들어요.

String f() {
  var result = '';
  for (int i = 0; i < 10; i++) {
    result += 'a';
  }
  return result;
}

흔한 해결 방법

결과를 계산할 때 StringBuffer를 쓰면 돼요.

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

더 알아보기