Google의 TypeScript Style Guide > Introduction

FeelsBotMan·2024년 11월 28일
0

GTS

목록 보기
2/8
post-thumbnail

1 Introduction

1.1 Terminology notes

이 스타일 가이드에서는 must, must not, should, should not, may라는 문구를 사용할 때 RFC 2119 용어를 사용한다. 선호하다(prefer)와 회피하다(avoid)라는 용어는 각각 해야 한다(should)와 하지 말아야 한다(should not)에 대응한다. 각각 명령형과 선언형 진술은 규범적이며 반드시 해야 한다는 것에 상응한다.
(작성자 첨언: "권장한다", "지양하자" 라는 표현을 사용할 계획임)

1.2 Guide notes

제시된 모든 예는 스타일 가이드를 설명하는 데에만 사용된다. 즉, 예시가 Google 스타일로 되어 있지만 코드를 표현하는 유일한 세련된 방법을 보여주는 것은 아니다.
(작성자 첨언: 가이드의 예제를 기준으로 이해를 위한 예제를 덧붙일 계획임)

2 Source file basics

2.1 File encoding: UTF-8

소스 파일은 UTF-8 인코딩을 권장한다.

2.1.1 Whitespace characters

소스 파일에서 ASCII 수평 공백 문자(코드값 0x20)가 유일하게 허용되는 공백 문자이다.

코드에 숨겨진(보이지 않는) 공백 문자나, 서로 다른 공백 문자들이 혼합될 경우, 코드 가독성과 동작에 영향을 줄 수 있다. 따라서 명확하게 허용된 ASCII 스페이스(0x20)만 사용하도록 제한한 것이다.

  • 유니코드 공백: \u3000 등 사용금지

문자열 리터럴(" " 또는 ' ') 내의 공백 문자도 예외는 아니다.


2.1.2 Special escape sequences

특수 이스케이프 시퀀스가 있는 경우 숫자 기반 이스케이프는 사용하지 말자:

특수 이스케이프 시퀀스란?
특정 문자를 표현하기 위해 이스케이프 시퀀스를 사용한다. 여기서 특수 이스케이프 시퀀스란, 간결하게 특정 의미를 갖는 문자들을 표현하는 형태이다:

  • \' : 작은따옴표 (Single Quote)
  • \" : 큰따옴표 (Double Quote)
  • \\ : 백슬래시 (Backslash)
  • \b : 백스페이스 (Backspace)
  • \f : 폼 피드 (Form Feed)
  • \n : 새 줄 (New Line)
  • \r : 캐리지 리턴 (Carriage Return)
  • \t : 탭 (Horizontal Tab)
  • \v : 수직 탭 (Vertical Tab)

숫자 기반 이스케이프란?
숫자로 문자를 표현하는 방식은 다음과 같다:

  • \xhh: 16진수 2자리(ASCII)로 표현, (예: \x0a → 새 줄)
  • \uhhhh: 유니코드 16진수 4자리, (예: \u000a → 새 줄)
  • \u{h}: 유니코드 코드포인트 표현, (예: \u{a} → 새 줄)

이러한 표현 방식은 가능하지만, 특수 이스케이프가 더 명확하고 간결하므로 피해야 한다.

Before

const newline = "\x0a";

After

const newline = "\n";

레거시 8진수 이스케이프는 사용하지 말자:
과거에는 8진수 이스케이프를 사용하는 방식이 있었다. 예를 들어, \012는 ASCII 코드 값 10(새 줄)을 나타낸다.
하지만 8진수 이스케이프는 모호성과 혼란을 유발할 수 있으므로 현대 코딩 스타일 가이드에서는 사용하지 않는다.


2.1.3 Non-ASCII characters

비-ASCII 문자는 이스케이프 시퀀스 표현 대신에, 가능한 한 직접 입력하자:
비-ASCII 문자는 ASCII 범위를 넘어서는 문자들(예: 특수 기호, 유니코드 문자 등)이다.
비-ASCII 문자는 직접 코드에 포함시키는 것이 좋다. 예를 들어, 무한대 기호(∞)는 ∞처럼 직접 입력하는 것이 바람직하다.
비-ASCII 문자를 이스케이프 시퀀스(\u 또는 \x)로 표현할 수 있지만, 이런 방식은 코드 가독성을 낮추고 이해하기 어려울 수 있으므로 사용하지 말자.

Before

const units = '\u03bcs'; // Greek letter mu, 's'

After

const units = 'μs'; // 직접 입력하여 코드의 가독성이 높아짐

이스케이프 시퀀스 사용 시, 주석과 함께 사용하자:

Before

const output = '\ufeff' + content;

After

const output = '\ufeff' + content;  // byte order mark

참고자료

Google TypeScript Style Guide

GitHub - google/gts: ☂️ TypeScript style guide, formatter, and linter.

Typescript Google Code Style Part 1
Typescript Google Code Style Part 2
Typescript Google Code Style Part 3

ts.dev - TypeScript style guide

profile
안드로이드 페페

0개의 댓글