-
Notifications
You must be signed in to change notification settings - Fork 5
๐ ํ์ ํ๊ฒฝ
- ํจ์ ํํ์
- ํ์ผ ๋ค์ด๋ฐ: components, pages: ํ์ค์นผ ์ผ์ด์ค, ๊ทธ์ธ๋ ์นด๋ฉ ์ผ์ด์ค
- custom hook์ use๋ก ์์ํ๊ธฐ
์ปดํฌ๋ํธ ๋ด๋ถ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์์ฑํ ๋๋ handle๋ก ์์ํ๊ณ
function App(){
const handleClick = ()=>{}
<button onClick={handleClick}></button>;
}
์์ ์ปดํฌ๋ํธ์์ ๋ฐ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ on์ผ๋ก ์์
function App(){
const doAnything = () =>{}
<Button onClick={doAnyThing}/>;
}
function Button({onClick}){
const handleClick = () =>{
onClick && onClick()
}
<button onClick={handleClick}></button>;
}
ํ๋ฒ์ PR์์๋ ์ต๋ 300์ค๊น์ง ์ฝ๋ ์์ ๊ฐ๋ฅ ๋ธ๋์น ๋ณํฉ ์ ๋ต (์๊ฒฌ1)
์ปค๋ฎค๋์ผ์ด์ ๋น์ฉ์ ์ค์ด๊ธฐ ์ํ Pn ๋ฃฐ์ ์ ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.**(ํ์ ) ์ ์ญ ์์ ํ์ผ(index.ts)**์ ์ฌ์ฉํฉ์๋ค
- ์ค์๋ง์ ์ฌ์ฉํ์ง ์๊ณ ํ ๋ค์์ ์ฌ์ฉํฉ์๋ค.
- ex) btn โ button โ
-
์ฃผ์
- ์ฃผ์์ ์ฌ๋งํ๋ฉด ์ฌ์ฉํ์ง ๋ง์๋ค.
- ์ต๋ํ ์ฝ๋๋ง์ผ๋ก ์ดํดํ ์ ์๋๋ก ์์ฑํ๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!
-
์์
- **constants ํด๋๋ฅผ ๋ง๋ค๊ณ ๋ด๋ถ์ ์ ์ญ ์์ ํ์ผ(index.ts)**์ ์ฌ์ฉํฉ์๋ค.
-
๋๋ฌธ์ + ์ค๋ค์ดํฌ ๋ค์ด๋ฐ ๋ฐฉ๋ฒ๋ก ์ ์ฌ์ฉํฉ์๋ค.
- ex)
TOTAL_DISCOUNT_ACCOUNT = 30000
- ex)
- ๋ณ์: ์นด๋ฉ์ผ์ด์ค. ๋ช ์ฌ๋ฅผ ์ฌ์ฉํฉ์๋ค.
-
ํจ์: ์นด๋ฉ์ผ์ด์ค. ๋์ฌ๋ฅผ ๋งจ ์ฒ์์ ์์ฑํ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ์๋ค.
- ex)
getValue
,getRandomNumber
,fetchUsers
,onChangeInput
,navigateToNextPage
-
์ต๋ํ ๋ช
ํํ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋๋ก ์์ฑํด์ฃผ์ธ์!
- ๋ช ํํ ์ด๋ฆ์ ์ง๊ธฐ ํ๋ค๋ค๋ฉด ํจ์๋ก ๋ถ๋ฆฌํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ผ ์ ์์ต๋๋ค!
- ex)
- ํด๋์ค: ํ์ค์นผ ์ผ์ด์ค๋ฅผ ์ฌ์ฉํฉ์๋ค.
-
ํ์
: ํ์ค์นผ ์ผ์ด์ค๋ฅผ ์ฌ์ฉํฉ์๋ค.
-
type ํค์๋๋ฅผ ์ฌ์ฉํด์ ํ์ ์ ์ ์ํฉ์๋ค.(interface X)
-
์ฌ์ฌ์ฉํ ํ์ ๋ง ๋ถ๋ฆฌํ์ฌ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํฉ์๋ค.
- ์ฌ์ฌ์ฉ ์ํ๋ ๊ฑด, ๊ฐ ํ์ผ์ ์ต์๋จ์ ๋ก์๋ค.
-
- CSS
- rem ๊ธฐ์ค์ผ๋ก ์์ฑํฉ๋๋ค.
- ์ผ๋จ ํ์์ ์ด๋ผ๊ณ ์๊ฐ๋๋ ํด๋๋ค๋ง ์์ฑํ์ต๋๋ค.
- ์ถํ ๋ค๋ฅธ ํด๋๊ฐ ํ์ํ๋ค๋ฉด ๊ทธ๋ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค!
/src
โ App.tsx
โ main.tsx
โ /api
| /assets
| /components
| /hooks
| /pages
| /types
| /utils
vite alias๋ก src๋ @
๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํ์ต๋๋ค.
๊ฐ์ ํด๋ ์์น๋ผ๋ฉด ์๋๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ณ ๊ทธ ์ธ์๋ ์ ๋๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ์๋ค.
ex)
- import LoginButton from ./LoginButton
- import LoginButton from @/Login/LoginButton
ํ์ /๊ธฐ๋ฅ์ด๋ฆ(์นด๋ฉ ํ๊ธฐ๋ฒ) ์ผ๋ก ์์ฑํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
ex)
- refactor/login-button
- feature/login-button
components, pages: ํ์ค์นผ ์ผ์ด์ค
hooks: ์นด๋ฉ ์ผ์ด์ค - use prefix
utils: ์นด๋ฉ ์ผ์ด์ค
api: ์นด๋ฉ ์ผ์ด์ค
types: ์นด๋ฉ ์ผ์ด์ค
PR์ฌ๋ ธ์ ๋ 1๋ช ์ด์ approveํด์ผ merge ๊ฐ๋ฅํฉ๋๋ค!
์ปค๋ฎค๋์ผ์ด์ ๋น์ฉ์ ์ค์ด๊ธฐ ์ํ Pn ๋ฃฐ์ ์ ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
-
P1: ๊ผญ ๋ฐ์ํด์ฃผ์ธ์ (Request changes)
- ๋ฆฌ๋ทฐ์ด๋ PR์ ๋ด์ฉ์ด ์๋น์ค์ ์ค๋ํ ์ค๋ฅ๋ฅผ ๋ฐ์ํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์ ์ฌํ๊ณ ์๋ ๋ฑ ์ค๋ํ ์ฝ๋ ์์ ์ด ๋ฐ๋์ ํ์ํ๋ค๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ, P1 ํ๊ทธ๋ฅผ ํตํด ๋ฆฌ๋ทฐ ์์ฒญ์์๊ฒ ์์ ์ ์์ฒญํฉ๋๋ค.
- ๋ฆฌ๋ทฐ ์์ฒญ์๋ p1 ํ๊ทธ์ ๋ํด ๋ฆฌ๋ทฐ์ด์ ์์ฒญ์ ๋ฐ์ํ๊ฑฐ๋, ๋ฐ์ํ ์ ์๋ ํฉ๋ฆฌ์ ์ธ ์๊ฒฌ์ ํตํด ๋ฆฌ๋ทฐ์ด๋ฅผ ์ค๋ํ ์ ์์ด์ผ ํฉ๋๋ค.
-
P2: ์ ๊ทน์ ์ผ๋ก ๊ณ ๋ คํด์ฃผ์ธ์ (Request changes)
- ์์ฑ์๋ P2์ ๋ํด ์์ฉํ๊ฑฐ๋ ๋ง์ฝ ์์ฉํ ์ ์๋ ์ํฉ์ด๋ผ๋ฉด ์ ํฉํ ์๊ฒฌ์ ๋ค์ด ํ ๋ก ํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
-
P3: ์ฌ๋งํ๋ฉด ๋ฐ์ํด ์ฃผ์ธ์ (Comment)
- ์์ฑ์๋ P3์ ๋ํด ์์ฉํ๊ฑฐ๋ ๋ง์ฝ ์์ฉํ ์ ์๋ ์ํฉ์ด๋ผ๋ฉด ๋ฐ์ํ ์ ์๋ ์ด์ ๋ฅผ ๋ค์ด ์ค๋ช ํ๊ฑฐ๋ ๋ค์์ ๋ฐ์ํ ๊ณํ์ ๋ช ์์ ์ผ๋ก(JIRA ํฐ์ผ ๋ฑ์ผ๋ก) ํํํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
- Request changes ๊ฐ ์๋ Comment ์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
-
P4: ๋ฐ์ํด๋ ์ข๊ณ ๋์ด๊ฐ๋ ์ข์ต๋๋ค (Approve)
- ์์ฑ์๋ P4์ ๋ํด์๋ ์๋ฌด๋ฐ ์๊ฒฌ์ ๋ฌ์ง ์๊ณ ๋ฌด์ํด๋ ๊ด์ฐฎ์ต๋๋ค.
- ํด๋น ์๊ฒฌ์ ๋ฐ์ํ๋ ๊ฒ ์ข์์ง ๊ณ ๋ฏผํด ๋ณด๋ ์ ๋๋ฉด ์ถฉ๋ถํฉ๋๋ค.
-
P5: ๊ทธ๋ฅ ์ฌ์ํ ์๊ฒฌ์
๋๋ค (Approve)
- ์์ฑ์๋ P5์ ๋ํด ์๋ฌด๋ฐ ์๊ฒฌ์ ๋ฌ์ง ์๊ณ ๋ฌด์ํด๋ ๊ด์ฐฎ์ต๋๋ค.
์ฝ๋ ๋ฆฌ๋ทฐ in ๋ฑ ํฌ์๋ฌ๋ ๊ฐ๋ฐ ๋ฌธํ | ๋ฑ ํฌ์๋ฌ๋
<aside> ๐ ์ฐธ๊ณ : [GitHub] Git ๋ธ๋์น์ ์ข ๋ฅ ๋ฐ ์ฌ์ฉ๋ฒ (5๊ฐ์ง)
</aside>
Type | ๋ด์ฉ |
---|---|
feat | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
fix | ๋ฒ๊ทธ ์์ ๋๋ typo |
refactor | ๋ฆฌํฉํ ๋ง |
design | CSS ๋ฑ ์ฌ์ฉ์ UI ๋์์ธ ๋ณ๊ฒฝ |
comment | ํ์ํ ์ฃผ์ ์ถ๊ฐ ๋ฐ ๋ณ๊ฒฝ |
style | ์ฝ๋ ํฌ๋งทํ , ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ์ฝ๋ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ |
test | ํ ์คํธ(ํ ์คํธ ์ฝ๋ ์ถ๊ฐ, ์์ , ์ญ์ , ๋น์ฆ๋์ค ๋ก์ง์ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ) |
chore | ์์ ๊ฑธ๋ฆฌ์ง ์๋ ๊ธฐํ ๋ณ๊ฒฝ์ฌํญ(๋น๋ ์คํฌ๋ฆฝํธ ์์ , assets image, ํจํค์ง ๋งค๋์ ๋ฑ) |
init | ํ๋ก์ ํธ ์ด๊ธฐ ์์ฑ |
rename | ํ์ผ ํน์ ํด๋๋ช ์์ ํ๊ฑฐ๋ ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ |
remove | ํ์ผ์ ์ญ์ ํ๋ ์์ ๋ง ์ํํ๋ ๊ฒฝ์ฐ |
- ์ปค๋ฐ๋ฉ์์ง๋
ํ๊ตญ์ด
๋ก ์์ฑ - ํ์
์
์๋ฌธ์
๋ก ์์ฑ -
init
์ ํ๋ก์ ํธ ์ธํ ์ ํ์ ์ ์ผ๋ก ์ฌ์ฉ -
chore
๋ ํ๋ก์ ํธ ์ค์ ๋ณ๊ฒฝ ์ ์ฌ์ฉ - ์์ฑ ์์ :
git commit -m 'feat: ๋ก๊ทธ์ธ ๋ฒํผ"
-
๊นํ๋ธ ์ด์ ์์ฑ
-
new issue ํด๋ฆญ
-
์ด์ ๋ชฉ์ ์ ๋ฐ๋ผ ํ ํ๋ฆฟ ์ ํ
-
์ด์ ์์ฑ
assigness : ํด๋น ์ด์๋ฅผ ๋๊ฐ ๋งก์์ง ์ ํ - ์์ฑ์ โ ์์ ์ (๋ชจ๋ฅด๋ฉด ๋น์๋๋ ๋)
label: ํด๋น ์ด์๊ฐ ์ด๋ค ์์ ๊ณผ ๊ด๋ จ ์๋๊ฐ - ex) feat, fix, refatorโฆ
project: ์คํํ ํ๋ก์ ํธ ์ ํ
milestone: ์ด์์ ํด๋นํ๋ ์คํ๋ฆฐํธ ์ ํ (์ฝ๊ฒ ๋งํด์ 1์ฃผ์ฐจ, 2์ฃผ์ฐจ, 3์ฃผ์ฐจ)
-
submit new issue๋ฅผ ํด๋ฆญํด์ ์ด์ ์์ฑ!
-
-
๊นํ๋ธ ์ด์์์ ๋ธ๋์น ์์ฑ
-
์ด์ ํด๋ฆญ
-
assign, project status ์ธํ ํ create a branch ํด๋ฆญ
-
๋ธ๋์น ์ด๋ฆ ๋ณ๊ฒฝ
- +๊ธฐ๋ณธ์ ์ผ๋ก default branch๋ก ์ค์ ํ develop branch๋ฅผ ๋ถ๋ชจ๋ก ๊ฐ์ง ๋ธ๋์น๊ฐ ์์ฑ๋จ
- ๋ง์ฝ main์ด๋ ๋ค๋ฅธ ๋ถ๋ชจ ๋ธ๋์น๋ก๋ถํฐ ์์ฑํ๊ณ ์ถ์ผ๋ฉด change branch source ํด๋ฆญํด์ ์์ )
-
๋ช ๋ น์ด ํ๋ก์ ํธ ํฐ๋ฏธ๋์ ๋ณต๋ถ ํ ์์ ์์~
-
-
์์ ๋ง์น ํ PR
-
pr ์์ฑ - ์ง๊ธ์ ๋ณ๊ฒฝ์ฌํญ์ด ์์ง๋ง ๋์ค์๋ ์๋จ์ pr์ ์์ฑํ๋ผ๋ ์๋ฆผ์ด ๋ฐ ๊บผ์! ์ผ๋จ์ new pull request ํด๋ฆญ
-
pr ์์ฑ
- close ์ ๊ด๋ จ๋ ์ด์๋ฅผ ์์ฑํ๋ฉด PR์ด merge ๋๋ฉด์ ์ด์๋ ๊ฐ์ด ๋ซํ
- project status done์ผ๋ก ๋ณ๊ฒฝ
-
Merge ํ ๋ feature ๋ธ๋์น๋ ๊ฐ์ด ์ญ์ merge๋ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ํ ์ง ์์ง ์์ ํ์
-
git flow ์ ๋ต์ ์ด์ฉํ๋ release branch๋ฅผ ์ ๊ฑฐํด์ ์ฌ์ฉํ๋ค.
Main ๋ธ๋์น๋ย ์ถ์ ๊ฐ๋ฅํ ํ๋ก๋์ ์ฝ๋๋ฅผ ๋ชจ์๋๋ ๋ธ๋์น์ด๋ค. Main ๋ธ๋์น๋ ํ๋ก์ ํธ ์์ ์ ์์ฑ๋๋ฉฐ, ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ง๋๋ค. ๋ฐฐํฌ๋ ๊ฐ ๋ฒ์ ์ Tag๋ฅผ ์ด์ฉํด ํ์ํด๋๋ค.
๋ค์ ๋ฒ์ ๊ฐ๋ฐ์ ์ํ ์ฝ๋๋ฅผ ๋ชจ์๋๋ ๋ธ๋์น์ด๋ค. ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด, Main ๋ธ๋์น๋ก ๋จธ์ง๋๋ค.
ํ๋์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋ธ๋์น์ด๋ค. Develop ๋ธ๋์น์์ ์์ฑํ๋ฉฐ, ๊ธฐ๋ฅ์ด ๊ฐ๋ฐ ์๋ฃ๋๋ฉด ๋ค์ Develop ๋ธ๋์น๋ก ๋จธ์ง๋๋ค. ๋จธ์งํ ๋ ์ฃผ์์ ์ Fast-Forward๋ก ๋จธ์งํ์ง ์๊ณ , Merge Commit์ ์์ฑํ๋ฉฐ ๋จธ์ง๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ ๊ฒํด์ผ ํ์คํ ๋ฆฌ๊ฐ ํน์ ๊ธฐ๋ฅ ๋จ์๋ก ๋ฌถ์ด๊ฒ ๋๋ค. - Squash ์ด๋จ๊น โ
์ด๋ฏธ ๋ฐฐํฌ๋ ๋ฒ์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด, Hotfix ๋ธ๋์น๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. Main ๋ธ๋์น์์ ์์ฑํ๋ฉฐ, ๋ฌธ์ ํด๊ฒฐ์ด ์๋ฃ๋๋ฉด Main๊ณผ Develop ๋ธ๋์น์ ๋๋ค ๋จธ์งํ๋ค.
- develop: ๊ฐ๋ฐ์ฉ
- main: ๋ฐฐํฌ์ฉ
-
์์
์ ๊ฐ์ ๋ธ๋์น ํ์ ์์
ํฉ๋๋ค.
- main โ develop โ feature/๊ธฐ๋ฅ/์ด์๋ฒํธ
- main โ develop โ refactoring/๊ธฐ๋ฅ/์ด์๋ฒํธ
-
๋ธ๋์น ๋ณํฉ ์ ๋ต
-
Merge
-
Squash and Merge
-
Rebase and Merge
์ฐธ๊ณ : https://im-developer.tistory.com/182
์ฌ๋ฌ ์๊ฒฌ๋ค
์๊ฒฌ 1
feature โ develop ๋จธ์ง Squash & Merge๊ฐ ์ ์ฉํ๋ค. feature ๋ธ๋์น์์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ง์ ๋ถํ ์ปค๋ฐ ๋ด์ญ์ ํ๋์ ์ปค๋ฐ์ผ๋ก ๋ฌถ์ด develop ์ ๋ณํฉํ๋ฉด์, develop์๋ ๊ธฐ๋ฅ ๋จ์๋ก ์ปค๋ฐ์ด ์ถ๊ฐ๋๋๋ก ์ ๋ฆฌํ ์ ์๋ค.
๋ํ feature ๋ธ๋์น๋ develop ๋ธ๋์น์ ๋ณํฉ ํ ์ ๊ฑฐํ๋ฏ๋ก, Merge Commit ์ ๋จ๊ธธ ํ์๊ฐ ์๋ค.
+๊ธฐ๋ฅ ๋ณ๋ก ์ปค๋ฐ์ ๋ฌถ๊ธฐ ์ํด์๋ merge๋ squash ์ฌ์ฉํ๋๋ก ๊ถ์ฅํ๋ ๋ฏ
develop โ main ๋จธ์ง main ๋ธ๋์น๋ ์ง๊ธ๊น์ง ์์ ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ฐฐํฌํ ๋ ๋ณํฉํ๋ค. develop ๋ธ๋์น๋ฅผ squash & merge ํ๊ฒ ๋๋ฉด ์ปค๋ฐ ์ด๋ ฅ์ด ๋ชจ๋ ์ฌ๋ผ์ ธ, ํน์ ๊ธฐ๋ฅ์์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๋กค๋ฐฑํ ์ ์๊ฒ๋๋ค. main ๋ธ๋์น ๋ํ Merge Commit ์ ๋จ๊ธธ ํ์ ์๋ค. ๋ฐ๋ผ์ Rebase & Merge ๊ฐ ์ ํฉํ๋ค.
์๊ฒฌ 2
ํ์ด ์ค๋ ฅ์ด ์์ง ๋ถ์กฑํ๋ค ๋๋ผ๋ฉด, ์ด์ ๋ง git์ผ๋ก ๋ฒ์ ๊ด๋ฆฌํ๋ ๋ฒ์ ๋ฐฐ์ฐ๊ธฐ ์์ํ๋ค๋ฉด Squash and Merge๊ฐ ์ข์ ๊ฒ๋๋ค.
(์ ๋ํ) ๊ฐ์ธ์ ์ผ๋ก๋ ์๊ฒฌ 1์ด ๊ด์ฐฎ๋ค๊ณ ๋ณด๋๋ฐ 2๋ ์๊ด์์ด๋ค
-
(ํฌํํ๊ณ ๊ฐ์ผ๋ฉด ์ข๊ฒ ๋ ๊ฒ) ํจ์ ์ ์ธ๋ฌธ vs ํจ์ ํํ์ (๋ ์ค ์ด๋ค๊ฑธ ๋ ์ ํธํ์๋์?)
(ํฌํ ์์ฒญ)ํ์ผ ๋ค์ด๋ฐ : ์ผ๋ฐฅ vs (ํ์ค์นผ+ ์นด๋ฉ), ๋ง์ฝ ํ์ค์นผ, ์นด๋ฉ์ด๋ผ๋ฉด ๊ฐ๊ฐ ์ด๋์ํฉ์์ ์ฌ์ฉํ ์ง
components, pages: ํ์ค์นผ ์ผ์ด์ค
hooks: ์นด๋ฉ ์ผ์ด์ค - use prefix
utils: ๋ฌด์จ ์ผ์ด์ค? ๊ฐ ์ข์๊น์
api: ๋ฌด์จ ์ผ์ด์ค? ๊ฐ ์ข์๊น์
types: ๋ฌด์จ ์ผ์ด์ค? ๊ฐ ์ข์๊น์
camelCase! kebab-case!
(์ ์)
-
์ปดํฌ๋ํธ ๋ด๋ถ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์์ฑํ ๋๋ handle๋ก ์์ํ๊ณ
function App(){ const handleClick = ()=>{} <button onClick={handleClick}></button> }
-
์์ ์ปดํฌ๋ํธ์์ ๋ฐ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ on์ผ๋ก ์์ํ๋๋ก ํ๋๊ฒ ์ด๋จ๊น์
function App(){ const doAnything = () =>{} <Button onClick={doAnyThing}/> } function Button({onClick}){ const handleClick = () =>{ onClick && onClick() } <button onClick={handleClick}></button> }
(ํ์ ) PR ์ฝ๋์์ ์ด๋์ ๋๋ก ํ ์ง๋ ๊ฒฐ์ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. (ex. 300๋ผ์ธ)
(ํ์ ) ๋ธ๋์น ๋ณํฉ ์ ๋ต (์๊ฒฌ1)
(๋ ผ์ ์์ฒญ) ์ปค๋ฎค๋์ผ์ด์ ๋น์ฉ์ ์ค์ด๊ธฐ ์ํ Pn ๋ฃฐ์ ์ ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
**(ํ์ ) ์ ์ญ ์์ ํ์ผ(index.ts)**์ ์ฌ์ฉํฉ์๋ค
- ์ค์๋ง์ ์ฌ์ฉํ์ง ์๊ณ ํ ๋ค์์ ์ฌ์ฉํฉ์๋ค.
- ex) btn โ button โ
-
์ฃผ์
- ์ฃผ์์ ์ฌ๋งํ๋ฉด ์ฌ์ฉํ์ง ๋ง์๋ค.
- ์ต๋ํ ์ฝ๋๋ง์ผ๋ก ์ดํดํ ์ ์๋๋ก ์์ฑํ๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!
-
์์
- **constants ํด๋๋ฅผ ๋ง๋ค๊ณ ๋ด๋ถ์ ์ ์ญ ์์ ํ์ผ(index.ts)**์ ์ฌ์ฉํฉ์๋ค.
-
๋๋ฌธ์ + ์ค๋ค์ดํฌ ๋ค์ด๋ฐ ๋ฐฉ๋ฒ๋ก ์ ์ฌ์ฉํฉ์๋ค.
- ex)
TOTAL_DISCOUNT_ACCOUNT = 30000
- ex)
- ๋ณ์: ์นด๋ฉ์ผ์ด์ค. ๋ช ์ฌ๋ฅผ ์ฌ์ฉํฉ์๋ค.
-
ํจ์: ์นด๋ฉ์ผ์ด์ค. ๋์ฌ๋ฅผ ๋งจ ์ฒ์์ ์์ฑํ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ์๋ค.
- ex)
getValue
,getRandomNumber
,fetchUsers
,onChangeInput
,navigateToNextPage
-
์ต๋ํ ๋ช
ํํ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋๋ก ์์ฑํด์ฃผ์ธ์!
- ๋ช ํํ ์ด๋ฆ์ ์ง๊ธฐ ํ๋ค๋ค๋ฉด ํจ์๋ก ๋ถ๋ฆฌํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ผ ์ ์์ต๋๋ค!
- ex)
- ํด๋์ค: ํ์ค์นผ ์ผ์ด์ค๋ฅผ ์ฌ์ฉํฉ์๋ค.
-
ํ์
: ํ์ค์นผ ์ผ์ด์ค๋ฅผ ์ฌ์ฉํฉ์๋ค.
-
type ํค์๋๋ฅผ ์ฌ์ฉํด์ ํ์ ์ ์ ์ํฉ์๋ค.(interface X)
[[TS] type๊ณผ interface์ ์ฐจ์ด](https://www.notion.so/TS-type-interface-4fafdde6d14e4b4593749864bf55b631?pvs=21)
-
์ฌ์ฌ์ฉํ ํ์ ๋ง ๋ถ๋ฆฌํ์ฌ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํฉ์๋ค.
- ์ฌ์ฌ์ฉ ์ํ๋ ๊ฑด, ๊ฐ ํ์ผ์ ์ต์๋จ์ ๋ก์๋ค.
-
- CSS
- rem ๊ธฐ์ค์ผ๋ก ์์ฑํฉ๋๋ค.
- ์ผ๋จ ํ์์ ์ด๋ผ๊ณ ์๊ฐ๋๋ ํด๋๋ค๋ง ์์ฑํ์ต๋๋ค.
- ์ถํ ๋ค๋ฅธ ํด๋๊ฐ ํ์ํ๋ค๋ฉด ๊ทธ๋ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค!
/src
โ App.tsx
โ main.tsx
โ /api
| /assets
| /components
| /hooks
| /pages
| /types
| /utils
vite alias๋ก src๋ @
๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํ์ต๋๋ค.
๊ฐ์ ํด๋ ์์น๋ผ๋ฉด ์๋๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ณ ๊ทธ ์ธ์๋ ์ ๋๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ์๋ค.
ex)
- import LoginButton from ./LoginButton
- import LoginButton from @/Login/LoginButton
ํ์ /๊ธฐ๋ฅ์ด๋ฆ(์นด๋ฉ ํ๊ธฐ๋ฒ) ์ผ๋ก ์์ฑํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
ex)
- refactor/login-button
- feature/login-button
components, pages: ํ์ค์นผ ์ผ์ด์ค
hooks: ์นด๋ฉ ์ผ์ด์ค - use prefix
utils: ์นด๋ฉ ์ผ์ด์ค
api: ์นด๋ฉ ์ผ์ด์ค
types: ์นด๋ฉ ์ผ์ด์ค
PR์ฌ๋ ธ์ ๋ 1๋ช ์ด์ approveํด์ผ merge ๊ฐ๋ฅํฉ๋๋ค!
์ปค๋ฎค๋์ผ์ด์ ๋น์ฉ์ ์ค์ด๊ธฐ ์ํ Pn ๋ฃฐ์ ์ ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
-
P1: ๊ผญ ๋ฐ์ํด์ฃผ์ธ์ (Request changes)
- ๋ฆฌ๋ทฐ์ด๋ PR์ ๋ด์ฉ์ด ์๋น์ค์ ์ค๋ํ ์ค๋ฅ๋ฅผ ๋ฐ์ํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์ ์ฌํ๊ณ ์๋ ๋ฑ ์ค๋ํ ์ฝ๋ ์์ ์ด ๋ฐ๋์ ํ์ํ๋ค๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ, P1 ํ๊ทธ๋ฅผ ํตํด ๋ฆฌ๋ทฐ ์์ฒญ์์๊ฒ ์์ ์ ์์ฒญํฉ๋๋ค.
- ๋ฆฌ๋ทฐ ์์ฒญ์๋ p1 ํ๊ทธ์ ๋ํด ๋ฆฌ๋ทฐ์ด์ ์์ฒญ์ ๋ฐ์ํ๊ฑฐ๋, ๋ฐ์ํ ์ ์๋ ํฉ๋ฆฌ์ ์ธ ์๊ฒฌ์ ํตํด ๋ฆฌ๋ทฐ์ด๋ฅผ ์ค๋ํ ์ ์์ด์ผ ํฉ๋๋ค.
-
P2: ์ ๊ทน์ ์ผ๋ก ๊ณ ๋ คํด์ฃผ์ธ์ (Request changes)
- ์์ฑ์๋ P2์ ๋ํด ์์ฉํ๊ฑฐ๋ ๋ง์ฝ ์์ฉํ ์ ์๋ ์ํฉ์ด๋ผ๋ฉด ์ ํฉํ ์๊ฒฌ์ ๋ค์ด ํ ๋ก ํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
-
P3: ์ฌ๋งํ๋ฉด ๋ฐ์ํด ์ฃผ์ธ์ (Comment)
- ์์ฑ์๋ P3์ ๋ํด ์์ฉํ๊ฑฐ๋ ๋ง์ฝ ์์ฉํ ์ ์๋ ์ํฉ์ด๋ผ๋ฉด ๋ฐ์ํ ์ ์๋ ์ด์ ๋ฅผ ๋ค์ด ์ค๋ช ํ๊ฑฐ๋ ๋ค์์ ๋ฐ์ํ ๊ณํ์ ๋ช ์์ ์ผ๋ก(JIRA ํฐ์ผ ๋ฑ์ผ๋ก) ํํํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
- Request changes ๊ฐ ์๋ Comment ์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
-
P4: ๋ฐ์ํด๋ ์ข๊ณ ๋์ด๊ฐ๋ ์ข์ต๋๋ค (Approve)
- ์์ฑ์๋ P4์ ๋ํด์๋ ์๋ฌด๋ฐ ์๊ฒฌ์ ๋ฌ์ง ์๊ณ ๋ฌด์ํด๋ ๊ด์ฐฎ์ต๋๋ค.
- ํด๋น ์๊ฒฌ์ ๋ฐ์ํ๋ ๊ฒ ์ข์์ง ๊ณ ๋ฏผํด ๋ณด๋ ์ ๋๋ฉด ์ถฉ๋ถํฉ๋๋ค.
-
P5: ๊ทธ๋ฅ ์ฌ์ํ ์๊ฒฌ์
๋๋ค (Approve)
- ์์ฑ์๋ P5์ ๋ํด ์๋ฌด๋ฐ ์๊ฒฌ์ ๋ฌ์ง ์๊ณ ๋ฌด์ํด๋ ๊ด์ฐฎ์ต๋๋ค.
[์ฝ๋ ๋ฆฌ๋ทฐ in ๋ฑ ํฌ์๋ฌ๋ ๊ฐ๋ฐ ๋ฌธํ | ๋ฑ ํฌ์๋ฌ๋](https://blog.banksalad.com/tech/banksalad-code-review-culture/)
๐ ์ฐธ๊ณ : **[[[GitHub] Git ๋ธ๋์น์ ์ข ๋ฅ ๋ฐ ์ฌ์ฉ๋ฒ (5๊ฐ์ง)](https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html)](https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html)**