Skip to content

Convention

TaeYoon Kim edited this page Nov 13, 2024 · 2 revisions

๐Ÿ’ป ์ฝ”๋“œ ์ปจ๋ฒค์…˜

  • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ํŒŒ์ผ ์ด๋ฆ„, ์ธํ„ฐํŽ˜์ด์Šค, ํƒ€์ž…, ์ปดํฌ๋„ŒํŠธ ๋ช… ํŒŒ์Šค์นผ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ex) interface IHomeProps

  • ์ปดํฌ๋„ŒํŠธ props ํƒ€์ž… ์„ ์–ธ ์‹œ <์ปดํฌ๋„ŒํŠธ๋ช…>Props ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

  • ๋””๋ ‰ํ† ๋ฆฌ ๋ช…, ๋ณ€์ˆ˜๋Š” ์นด๋ฉœ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ex) let pinocoGame = "pinoco"

  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ props์—๋Š” on ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ด๊ณ , ๊ฐ’์œผ๋กœ ๋„˜๊ธธ ๋•Œ์—๋Š” handle ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ธ๋‹ค.

  • ํ•จ์ˆ˜ ๋ช…์€ ๋™์‚ฌ ๋’ค์— ๋ช…์‚ฌ๊ฐ€ ์˜ค๋„๋ก ์กฐํ•ฉํ•˜๊ณ  ์นด๋ฉœ ์ผ€์ด์Šค๋กœ ์ž‘์„ฑํ•œ๋‹ค.

  • export ์‚ฌ์šฉ ์‹œ named exports ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • boolean ํƒ€์ž… ๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜์—๋Š” ์ ‘๋‘์‚ฌ is๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (ex. isChecked)

  • forEach, map, some, every ๋“ฑ์˜ ๊ณ ์ฐจ ํ•จ์ˆ˜๋ฅผ ์ง€ํ–ฅํ•œ๋‹ค.

  • const๋ฅผ ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ํ•˜๊ณ , ๊ฐ’์ด ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๋•Œ๋งŒ let์„ ์“ด๋‹ค

  • ์ƒ์ˆ˜ ๊ฐ’๋“ค์„ ํ‘œํ˜„ํ•˜๋Š” ๋ณ€์ˆ˜๋Š” enum ์œผ๋กœ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

  • type vs interface โ‡’ interface๋กœ ํ†ต์ผํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

  • interface ์„ ์–ธ ์‹œ ์ด๋ฆ„ ์•ž์— I๋ฅผ ๋ถ™์ธ๋‹ค.

  • eslint์™€ prettier๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

    ์œ„์— ์–ธ๊ธ‰ํ•˜์‹  ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ ์ปจ๋ฒค์…˜ ๊ทœ์น™์€ ESLint์™€ Prettier์—์„œ ์„ค์ • ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ผ๋ถ€ ๊ทœ์น™์€ ์ง์ ‘์ ์ธ ์„ค์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•ด ์ถ”๊ฐ€์ ์ธ ๊ทœ์น™์„ ์ •์˜ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    ESLint ์„ค์ •์œผ๋กœ ๊ฐ€๋Šฅํ•œ ๊ทœ์น™

    • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ํ•จ์ˆ˜ ์‚ฌ์šฉ: @typescript-eslint/explicit-function-return-type ๋“ฑ์˜ ๋ฃฐ๋กœ ํ•จ์ˆ˜ ํƒ€์ž…์„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ผ๋ฐ˜ ํ•จ์ˆ˜๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ๊ทœ์น™์€ ๊ธฐ๋ณธ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋‹จ๊ณ„์—์„œ ์ ๊ฒ€ํ•˜๊ฑฐ๋‚˜ ESLint ์ปค์Šคํ…€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋ฐ ํ•จ์ˆ˜ ๋„ค์ด๋ฐ (on ์ ‘๋‘์‚ฌ, handle ์ ‘๋‘์‚ฌ): ESLint ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ์—†์ง€๋งŒ, @typescript-eslint/naming-convention ๋ฃฐ์„ ์ด์šฉํ•ด ํ•จ์ˆ˜ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์„ ์ผ๋ถ€ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์นด๋ฉœ ์ผ€์ด์Šค์™€ ํŒŒ์Šค์นผ ์ผ€์ด์Šค ๊ทœ์น™: @typescript-eslint/naming-convention์—์„œ ์ธํ„ฐํŽ˜์ด์Šค, ๋ณ€์ˆ˜๋ช…, ํƒ€์ž… ๋“ฑ์˜ ๋„ค์ด๋ฐ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • Boolean ํƒ€์ž… ๋ณ€์ˆ˜ ์ ‘๋‘์‚ฌ (is): @typescript-eslint/naming-convention ๋ฃฐ์—์„œ ์ ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ํ•จ์ˆ˜ ์ด๋ฆ„ ๋„ค์ด๋ฐ: @typescript-eslint/naming-convention์„ ํ†ตํ•ด ํ•จ์ˆ˜๊ฐ€ ์นด๋ฉœ ์ผ€์ด์Šค๋กœ ์ž‘์„ฑ๋˜๋„๋ก ๊ทœ์น™์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • forEach, map ๋“ฑ์˜ ๊ณ ์ฐจ ํ•จ์ˆ˜ ์ง€ํ–ฅ: no-loops๋‚˜ array-callback-return ๋“ฑ์˜ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ ์ฐจ ํ•จ์ˆ˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๊ณ  ์ผ๋ฐ˜ ๋ฃจํ”„๋ฅผ ๊ฒฝ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • const ์šฐ์„  ์‚ฌ์šฉ: prefer-const ๊ทœ์น™์œผ๋กœ const ์‚ฌ์šฉ์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • Named exports ๋ฐฉ์‹: import/no-default-export ๋ฃฐ๋กœ ๊ธฐ๋ณธ export๋ฅผ ์ œํ•œํ•˜๊ณ  named exports๋ฅผ ๊ถŒ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํƒ€์ž… ์„ ์–ธ ์‹œ interface ์‚ฌ์šฉ: consistent-type-definitions ๋ฃฐ์„ ํ†ตํ•ด interface ์‚ฌ์šฉ์„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ESLint์™€ Prettier ์„ค์ •์œผ๋กœ๋Š” ์ œํ•œ์ ์ธ ๊ทœ์น™

    • <์ปดํฌ๋„ŒํŠธ๋ช…>Props ํ˜•ํƒœ์˜ props ํƒ€์ž… ์„ ์–ธ: ์ง์ ‘์ ์œผ๋กœ ์ ์šฉํ•  ๊ทœ์น™์€ ์—†์œผ๋ฏ€๋กœ, ์ด ๋ถ€๋ถ„์€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋กœ ์ ๊ฒ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ƒ์ˆ˜ ํ‘œํ˜„์„ ์œ„ํ•œ enum ์‚ฌ์šฉ: ESLint์—์„œ๋Š” ์ด์™€ ๊ด€๋ จ๋œ ๊ทœ์น™์„ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง์ ‘์ ์ธ ์ œํ•œ์ด ์—†์œผ๋ฏ€๋กœ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋‚˜ TSLint๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ESLint ์„ค์ • ํŒŒ์ผ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ผ๋ถ€ ๊ทœ์น™์€ ์ถ”๊ฐ€์ ์ธ ์ฝ”๋“œ ๊ฒ€ํ†  ๊ณผ์ •์—์„œ ๋ณด์™„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Prettier๋Š” ์ฝ”๋“œ ํฌ๋งทํŒ… ๊ทœ์น™์— ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ฃผ๋กœ ๋“ค์—ฌ์“ฐ๊ธฐ, ๊ณต๋ฐฑ, ๋ผ์ธ ๊ธธ์ด ๋“ฑ์˜ ๊ทœ์น™์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ™ ์ปค๋ฐ‹๋ฉ”์‹œ์ง€ ์–‘์‹

<ํƒ€์ž…>: <์ œ๋ชฉ>

ex) feat: ์›”๊ณผ ์ผ์˜ ์ˆซ์ž๋ฅผ ๋‘์ž๋ฆฌ๋กœ ๋งž์ถฐ์ฃผ๋Š” ๊ธฐ๋Šฅ

  • feat : ๊ธฐ๋Šฅ (์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ)
  • fix : ๋ฒ„๊ทธ (๋ฒ„๊ทธ ์ˆ˜์ •)
  • refactor : ๋ฆฌํŒฉํ† ๋ง (๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์ด ์ฝ”๋“œ ํ–ฅ์ƒ)
  • style : ์Šคํƒ€์ผ (ํฌ๋งทํŒ…, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋ณ€๊ฒฝ ์—†์Œ)
  • design: UI ํผ๋ธ”๋ฆฌ์‹ฑ
  • docs : ๋ฌธ์„œ (๋ฌธ์„œ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ)
  • test : ํ…Œ์ŠคํŠธ (ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋ณ€๊ฒฝ ์—†์Œ)
  • chore : ์„ค์ • ๊ด€๋ จ ๋ณ€๊ฒฝ์‚ฌํ•ญ (๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ •, package.json ๋“ฑ), ๊ธฐํƒ€ ๋“ฑ๋“ฑ

๐ŸŽฏ PR ์ปจ๋ฒค์…˜

## PR ์ œ๋ชฉ ์–‘์‹ : ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ํ˜•์‹
<-- ex) **[Fix] ์ œ์ถœ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ ๋ผ์šด๋“œ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • -->

##** PR ๋ผ๋ฒจ : ํƒ€์ž…, ์ค‘์š”๋„(important)

## assignee ๋ณธ์ธ ํƒœ๊ทธ ํ•„์ˆ˜

## ๊ฐœ์š”
<!---- ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ ๊ด€๋ จ ์ด์Šˆ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์–ด๋–ป๊ฒŒ๋ณด๋‹ค ๋ฌด์—‡์„ ์™œ ์ˆ˜์ •ํ–ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”. -->

<!---- Resolves: #(Isuue Number) -->

##  PR ์œ ํ˜•
์–ด๋–ค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋‚˜์š”?

- [ ] ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
- [ ] ๋ฒ„๊ทธ ์ˆ˜์ •
- [ ] CSS ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ
- [ ] ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ(์˜คํƒ€ ์ˆ˜์ •, ํƒญ ์‚ฌ์ด์ฆˆ ๋ณ€๊ฒฝ, ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ)
- [ ] ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
- [ ] ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
- [ ] ๋ฌธ์„œ ์ˆ˜์ •
- [ ] ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€, ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง
- [ ] ๋นŒ๋“œ ๋ถ€๋ถ„ ํ˜น์€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ˆ˜์ •
- [ ] ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช… ์ˆ˜์ •
- [ ] ํŒŒ์ผ ํ˜น์€ ํด๋” ์‚ญ์ œ

## ์ž‘์—… ๋‚ด์šฉ
<!-- ์ž‘์—… ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ ์–ด์ฃผ์„ธ์š” -->

## ์Šคํฌ๋ฆฐ์ƒท
<!-- ์ž‘์—…๋ฌผ์— ๋Œ€ํ•œ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฒจ๋ถ€ํ•ด์ฃผ์„ธ์š” -->

## ๊ณต์œ ์‚ฌํ•ญ to ๋ฆฌ๋ทฐ์–ด
<!-- ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์ค‘์ ์ ์œผ๋กœ ๋ด์ฃผ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋Š” ๋ถ€๋ถ„์„ ์ ์–ด์ฃผ์„ธ์š” -->
<!-- ๋…ผ์˜ํ•  ์‚ฌํ•ญ์ด ์žˆ๋‹ค๋ฉด ์ ์–ด์ฃผ์„ธ์š” -->

## PR Checklist
PR์ด ๋‹ค์Œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

- [ ] ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜์— ๋งž๊ฒŒ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.  Commit message convention ์ฐธ๊ณ   (Ctrl + ํด๋ฆญํ•˜์„ธ์š”.) 
- [ ] ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค.(๋ฒ„๊ทธ ์ˆ˜์ •/๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ).

๐ŸŽฏ ISSUE ์ปจ๋ฒค์…˜

---
category: "โœจ Feature Template"
about: ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์ด์Šˆ ํ…œํ”Œ๋ฆฟ
title: ''
labels: ''
assignees: ''
---

## ์–ด๋–ค ๊ธฐ๋Šฅ์ธ๊ฐ€์š”?

> ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

## ์ž‘์—… ์ƒ์„ธ ๋‚ด์šฉ

- [ ] TODO
- [ ] TODO
- [ ] TODO

## ์ฐธ๊ณ ํ• ๋งŒํ•œ ์ž๋ฃŒ(์„ ํƒ)
---
category: "\U0001F41B Bug Report Template"
about: ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ ์ด์Šˆ ํ…œํ”Œ๋ฆฟ
title: ''
labels: ''
assignees: ''
---

## ์–ด๋–ค ๋ฒ„๊ทธ์ธ๊ฐ€์š”?

> ์–ด๋–ค ๋ฒ„๊ทธ์ธ์ง€ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

## ์–ด๋–ค ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ์ธ๊ฐ€์š”?

> (๊ฐ€๋Šฅํ•˜๋ฉด) Given-When-Then ํ˜•์‹์œผ๋กœ ์„œ์ˆ ํ•ด์ฃผ์„ธ์š”

## ์˜ˆ์ƒ ๊ฒฐ๊ณผ

> ์˜ˆ์ƒํ–ˆ๋˜ ์ •์ƒ์ ์ธ ๊ฒฐ๊ณผ๊ฐ€ ์–ด๋–ค ๊ฒƒ์ด์—ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

## ์ฐธ๊ณ ํ• ๋งŒํ•œ ์ž๋ฃŒ(์„ ํƒ)
---
category: "โœ… Etc Template"
about: ๊ธฐํƒ€ ์ž์œ ์–‘์‹ ํ…œํ”Œ๋ฆฟ
title: ''
labels: ''
assignees: ''
---

## (์ œ๋ชฉ)
### (ํŽ˜์ด์ง€)
- [ ] ๊ตฌํ˜„๋‚ด์šฉ1
- [ ] ๊ตฌํ˜„๋‚ด์šฉ2

Pinoco

๐Ÿ‘‹๐Ÿป ์†Œ๊ฐœ

ํšŒ์˜ ๊ธฐ๋ก

๐Ÿ“ ํŒ€ ๋ฃฐ

๐Ÿ“” ๊ฐœ๋ฐœ ๋ฌธ์„œ

๐Ÿ“” ๊ฐœ๋ฐœ ์œ„ํ‚ค

Clone this wiki locally