Dart의 String 문법
다른 언어들은 안이러는데
Flutter는 Dart언어를 사용하기에 대부분 Dart를 사용하지 않다가 Flutter를 사용하기 위해 사용하게 되었을 것이다.
조금 범용적으로 사용되는 JAVA나 Python, C++ 와 같은 언어들에 익숙해져있다가 Dart로 오게 되면 한가지 의문점이 생기게 된다.
바로 문자열을 “”(큰 따옴표, Double quote)
로 감싸는게 아니라 ‘’ (작은 따옴표, Single quote)
로 감싸기 때문이다.
Dart의 String 문법
Dart에서는 아래와 같이 문자열을 작성할 수 있다.
String singleQuote = '안녕하세요. 고라니입니다.';
String doubleQuote = "안녕하세요. 고라니입니다.";
두 문자열에 차이가 있냐고 하면, 차이가 없다.
컴파일러는 작음 따옴표로 생성이 되었든, 큰 따옴표로 생성이 되었든 같은 문자열을 생성해준다.
singleQuote == doubleQuote; //true
아주아주 사소한 약간의 차이점
그렇다고 차이점이 아예 없는 건 아니다.
내부에 따옴표를 사용해야할 때가 있다면, \(백 슬래시, escape character)
를 사용하여 다음과 같이 표현을 해줘야한다.
String singleQuote = '안녕하세요. \'고라니\'입니다.'; //안녕하세요. '고라니'입니다.
하지만 내부의 따옴표와 외부의 따옴표가 다르다면 escape character를 사용할 필요가 없다.
String singleQuote = '안녕하세요. "고라니"입니다.'; //안녕하세요. "고라니"입니다.
String doubleQuote = "안녕하세요. '고라니'입니다."; //안녕하세요. '고라니'입니다.
작은 따옴표 문법과 큰 따옴표 문법은, 서로와 다른 따옴표를 출력할 때 백 슬래시를 사용하지 않아도 된다는 공통점이자 차이점을 가진다.
그럼 둘 중 뭘 써야해
위의 두 문서에 따르면 기본적으로 작은 따옴표 사용을 권장한다.
아래의 예외 사항에서도 해당 예외 사항을 제외하고는 다른 모든 문자열에 대해서는 작은 따옴표를 권장하고 있다.
Use double quotes for nested strings or (optionally) for strings that contain single quotes. For all other strings, use single quotes.
"중첩된 문자열 또는 (선택적으로) 작은따옴표를 포함하는 문자열에는 큰따옴표를 사용하십시오. 다른 모든 문자열에 대해서는 작은따옴표를 사용하십시오.”
그럼 왜 작은 따옴표(Single Quote)를 권장하는 걸까?
구글에서 공식적으로 밝힌 내용은 아니지만 작은 따옴표를 권장하는 이유는 아래와 같다.
1. 읽기 쉽다.
첫번째로는 읽기 쉽다는 것이다.
이는 사람마다 차이가 분명히 존재하겠지만, 앞 뒤에 굵게 공간을 차지하는 큰 따옴표 보다는 작은 따옴표가 좀 더 읽기 쉽다.
"hello, this is gorani"
'hello this is gorani'
“아니, 따옴표 하나 차이가 뭐 얼마나 크다고 읽기 쉽다는 거지?”
따옴표 하나의 차이는 생각보다 크다.
아래는 큰 따옴표와 작은 따옴표의 간격 차이를 보여준다. ▼
큰 따옴표는 글자와의 간격이 좁아서 사람의 눈이 이를 구분하는데 좀 더 피로를 느끼게 된다.
아주 사소하고 간단한 차이지만, 따옴표를 계속해서 보면 피로가 쉽게 누적된다.
1의 피로를 100번 느끼면 100의 피로가 누적되지만, 2의 피로를 100번 느끼면 단숨에 두배가 된다.
피로를 정확한 수치로는 계산할 수 없지만, 아주 약간의 증가가 누적되는 것을 무시하긴 힘들다.
2. 쉬프트(shift)키를 사용하지 않아도 된다.
이 역시 누적되는 피로양과 관련이 있다.
개발을 하다보면 쉬프트키를 자주 누르게 되는데, 이 역시도 무시하기 어려운 피로감을 가져올 수 있다.
“이정도에 피로를 느낄 정도로 몸이 약하면 병원에 가봐야…”
이것도 맞는 말이지만, 여기서 말하는 피로는 인식의 피로다.
쉬프트키를 자주 반복해서 눌러야 하는 상황을 굉장히 귀찮다고 여기게 된다.
3. 기본 양식
이는 작음 따옴표 사용의 장점 보다는, 사용을 해야하는 이유에 가깝다.
이미 플러터 앱 템플릿에서도 작은 따옴표를 사용하고 있고, 대부분의 Dart관련 패키지들, extension들에서 작은 따옴표를 사용하고 있다.
거의 모든 부분에서 작은 따옴표를 사용하기로 했는데, 갑자기 특별한 이유 없이 큰 따옴표로 코드를 작성한다면 통일성을 해치게 된다.
“너무 사소해서 지키지 않아도 될 거 같은데?”
snake_case나 camelCase와 같이 코드에서 눈에 띄게 보이는 부분들은 사소하지 않다고 판단되지만 작은 따옴표나 큰 따옴표와 같은 요소들은 굉장히 사소하게 여겨진다.
실제로도 굉장히 사소하긴 하지만 통일성이 불러오는 나비효과를 감당하는 것은 본인의 책임이다.
큰 따옴표를 요긴하게 사용하게 사용하고 싶어
Flutter에서 공식적으로 작은 따옴표를 권장하고 있어서 작은 따옴표를 주로 사용하고 있지만, 특별한 예외사항 외에는 사용되지 않는 큰 따옴표를 조금은 요긴하게 사용하고 싶다는 생각이 들었다.
프로젝트에 하나의 규칙을 세워 사용하면 요긴할 거 같아, 다른 사람들은 어떻게 사용하는지 찾아보았고 하나 굉장히 유용한 사용을 찾았다.
규칙
- 작은 따옴표는 시스템 내부에서 사용되는 리터럴 값들에 사용한다.
- 데이터베이스 접근 Key
- API URL, Http URL
- 개행문자 \\n
- 패키지 import
- 사용자가 볼 수 없는 값들, 즉 개발자만 보는 값들에 작은 따옴표를 사용한다.
- 큰 따옴표는 사용자에게 보여지는 리터럴 값들에 사용한다.이렇게 사용을 하면 추후 국제화를 할 때 요긴하게 사용된다.
- 사용자가 앱을 사용하면서 보는 문자열들에 큰 따옴표를 사용한다.
이렇게 사용하니 어떤 문자열이 view에서 사용되는지, controller에서 사용되는지 조금 더 쉽게 구분할 수 있게 되었다. ▼
조금 더 구분하기 편리해졌다.
마치며
Flutter를 처음 할 때부터 지금까지 항상 작은 따옴표의 사용과 큰 따옴표의 존재 의의에 대해서 의문을 품고 있었는데, 이번 기회에 명확히 정리하게 되었다.
큰 따옴표 문법이 존재할 필요가 있나 싶기도 하면서도, 다른 언어를 사용하다가 넘어온 사람들을 위해 남겨두는게 좋은거 같다는 생각이 든다.
정확히 같은 기능을 하는 중복된 문법의 존재가 그리 좋다고는 생각되지 않긴 하지만, 입문자들을 위해서라면 어쩔 수 없는거 같다.
지금 처럼 큰 따옴표에 새로운 규칙을 두어 사용하면 요긴하기도 하니 이러나 저러나 단점만 있는건 아닌듯 하다.
'Develop > Flutter' 카테고리의 다른 글
[Flutter][Widget][Package] WebView Widget(4.2.x) (0) | 2024.02.12 |
---|---|
[Flutter] FutureBuilder로 비동기 화면 그리기 (feat.GetX) (0) | 2024.02.01 |
[Flutter] 파이어베이스 이메일 인증에서 생긴 문제 (0) | 2024.01.23 |
[Flutter] Dart 비동기 프로그래밍 찍먹 (0) | 2024.01.23 |
[Flutter][Error] M1 맥 Flutter CocoaPod 설치 오류 (0) | 2024.01.21 |