이스케이프가 필요 없다면 큰따옴표를 써요

이스케이프가 필요 없다면 큰따옴표를 써요

prefer_double_quotes 린트 규칙은, 추가 이스케이프가 필요하지 않은 곳에서는 큰따옴표(")를 쓰라고 권하는 규칙이에요. Stable 상태이고, 코드 수정도 자동으로 가능하며 Dart 2.4에서 나왔어요.

출처: Prefer double quotes where they won't require escape sequences.

본문

문자열 안에 큰따옴표가 들어가야 하는데 이스케이프를 해야 하는 상황이라면, 작은따옴표(')를 써서 큰따옴표를 이스케이프하지 않아도 되게 할 수 있어요. 다만 이 규칙은 그 반대 방향은 잡지 않아요 — 큰따옴표 문자열 안에서 큰따옴표를 이스케이프한 코드는 지적하지 않는다는 뜻이에요.

문자열 안에 문자열이 들어가는 문자열 보간(string interpolation) 안에는 더 특별한 상황이 생겨요. 문자열이 중첩되다 보면 큰따옴표와 작은따옴표를 섞는 게 훨씬 읽기 편할 때가 있어요. 그래서 보간된 문자열 안이나, 보간된 문자열을 담은 문자열에서는 작은따옴표를 쓸 수 있어요.

BAD — 큰따옴표를 쓸 수 있는데 작은따옴표로 썼어요.

useStrings(
  'should be double quote',
  r'should be double quote',
  r'''should be double quotes''')

GOOD — 큰따옴표를 기본으로 쓰고, 이스케이프가 필요하거나 문자열이 중첩될 때만 작은따옴표를 섞었어요.

useStrings(
  "should be double quote",
  r"should be double quote",
  r"""should be double quotes""",
  'ok with " inside',
  'nested ${a ? "strings" : "can"} be wrapped by a double quote',
  "and nested ${a ? 'strings' : 'can be double quoted themselves'}");

호환되지 않는 규칙

prefer_double_quotes 규칙은 다음 규칙과 함께 쓸 수 없어요.

  • prefer_single_quotes

규칙 켜기

analysis_options.yaml 파일의 linter > rules 아래에 prefer_double_quotes를 추가하면 돼요.

linter:
  rules:
    - prefer_double_quotes

YAML 맵 문법으로 설정한다면 이렇게 써요.

linter:
  rules:
    prefer_double_quotes: true

더 알아보기

  • 반대로 작은따옴표를 선호하는 팀이라면 prefer_single_quotes 규칙을 봐요. 이 규칙과는 함께 쓸 수 없어요.