단일 인용부호를 사용하세요

단일 인용부호를 사용하세요

싱글 쿼트(')를 쓰는 게 기본이고, 문자열 안에 싱글 쿼트가 들어 있을 때만 더블 쿼트(")를 쓰게 해주는 린트 규칙이에요. 오늘은 이 규칙이 어떤 식으로 동작하는지 함께 살펴볼게요.

출처: prefer_single_quotes

본문

이 규칙은 "별도의 이스케이프가 필요하지 않다면 싱글 쿼트를 쓰세요"를 강조해요.

즉, 아포스트로피가 들어 있는 문자열은 이스케이프하지 않아도 되도록 더블 쿼트를 쓸 수 있어요. 참고로 우리는 반대 방향은 검사하지 않아요. 즉, 이스케이프된 아포스트로피가 들어간 싱글 쿼트 문자열은 플래그로 잡지 않는다는 뜻이에요.

문자열 보간(string interpolation) 안에 문자열이 들어가는 경우도 드물게 있는데, 이때는 어딘가에 더블 쿼트를 쓰는 편이 훨씬 읽기 좋아요. 그래서 보간된 문자열 리터럴 안쪽이나 그것을 감싸는 곳에는 더블 쿼트를 쓸 수 있게 허용해요. 사실 문자열 보간 안의 문자열은 그 자체로 별도의 린트 종류가 되어야 한다고 볼 수도 있겠네요.

BAD:

useStrings(
    "should be single quote",
    r"should be single quote",
    r"""should be single quotes""")

GOOD:

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

호환되지 않는 규칙

prefer_single_quotes 린트는 다음 규칙과 호환되지 않아요:

  • prefer_double_quotes

켜는 방법

prefer_single_quotes 규칙을 사용하려면 analysis_options.yaml 파일의 linter > rules 아래에 prefer_single_quotes를 추가해요:

linter:
  rules:
    - prefer_single_quotes

만약 YAML 맵(map) 문법으로 린트 규칙을 설정한다면 linter > rules 아래에 prefer_single_quotes: true를 추가하면 돼요:

linter:
  rules:
    prefer_single_quotes: true

더 알아보기