-
Notifications
You must be signed in to change notification settings - Fork 3
๐ฉโ๐ป Coding Convention
Jongeun Kim edited this page Nov 18, 2020
·
4 revisions
- ์ธ๋ถ ๋ชจ๋๊ณผ ๋ด๋ถ๋ชจ๋์ ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ๋ค. ์ธ๋ถ๋ชจ๋๊ณผ ๋ด๋ถ๋ชจ๋ ์ ์ธ์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๋ค. ๋ด๋ถ๋ชจ๋์ ๊ฒฝ์ฐ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋๊ณผ ์๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋์ ์ถ๊ฐ๋ก ๊ตฌ๋ถํ๋ค.
import axios from 'axios';
import router from '@service/router'
import util from './util'
-
ํ์ผ๋ค์ด๋ฐ
- ์ปดํฌ๋ํธ โ
PascalCase
- ์ธ โ
cammelCase
- ์ปดํฌ๋ํธ โ
-
์์ โ
SNAKE_CASE
-
ํจ์ ๋ฐ ๋ณ์ โ
cammelCase
-
์ปดํฌ๋ํธ โ
PascalCase
-
์ฐฝ์์ ์ธ ๋จ์ด ์ฐ์ง ์๊ธฐ ๐ (์ ์ผ ๋ ์ค๋ฅด๊ธฐ ์ฝ๊ณ ๊ธฐ๋ณธ์ ์ธ ๋จ์ด)
-
๋ณ์๋ ๋ช ์ฌํ์ผ๋ก ์์ฑ
-
ํจ์๋ ์์ ํ์ผ๋ก ์์ฑ
- htmlํ๊ทธ ์ ์ธ ์ ์ต๋ํ ์๋ฉํฑํ ํ๊ทธ ์ฌ์ฉ
- ๋ชจ๋๊ฐ approve ํ ํ์ merge ํ ์ ์๋ค
- ์ฝ๋ ๋ฆฌ๋ทฐ๋ ํ์! ๊ผญ ํ์ธํ๊ธฐ! ๐
- html id + className์ snake_case๋ก ํ๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก eslint airbnb๋ฅผ ๋ฐ๋ฅธ๋ค
- ์ถ๊ฐํ๊ณ ์ถ์ ๋ฃฐ์ด ์์ ๊ฒฝ์ฐ ์๊ฒฌ์ ์ ์ํด์ ๋ ผ์ ํ์ ๋ฐ์ ํ ์ ์๋ค
module.exports = {
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
extends: [
'airbnb-base',
'plugin:import/errors',
'plugin:import/warnings',
'plugin:prettier/recommended',
'plugin:@typescript-eslint/recommended',
],
rules: {
'linebreak-style': 0,
'import/prefer-default-export': 0,
'prettier/prettier': 0,
},
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
alias: {
map: [
['@api', './src/api'],
['@auth', './src/auth'],
['@config', './src/config'],
['@models', './src/models'],
['@util', './src/util/*'],
['@', './src'],
],
},
},
},
};
{
"singleQuote": true,
"parser": "typescript",
"semi": true,
"useTabs": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 100,
"arrowParens": "always"
}
{
"compilerOptions": {
"target": "es6",
"lib": ["es2015", "es2016", "es2017", "es2018", "es2019", "es2020"],
// sourceMap
"sourceMap": true,
// module
"module": "commonjs",
"moduleResolution": "node",
"esModuleInterop": true,
// lint
"strict": true,
"allowUnreachableCode": false,
"allowUnusedLabels": false,
"noFallthroughCasesInSwitch": true,
// more spec
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"baseUrl": ".",
"paths": {
"@api/*": ["src/api/*"],
"@auth/*": ["src/auth/*"],
"@config/*": ["src/config/*"],
"@models/*": ["src/models/*"],
"@util/*": ["src/util/*"],
"@/*": ["src/*"]
}
}
}
์ธ๋ถ์ ๋ณด๋ ์ฌ์ด๋๋ฐ๋ฅผ ์ด์ฉํด์ฃผ์ธ์๐ โก๏ธโก๏ธ
Daily Scrum
- 201116-scrum
- 201117-scrum
- 201118-scrum
- 201119-scrum
- 201120-scrum
- 201123-scrum
- 201124-scrum
- 201125-scrum
- 201126-scrum
- 201127-scrum
- 201130-scrum
- 201201-scrum
- 201202-scrum
- 201203-scrum
- 201204-scrum
- 201207-scrum
- 201208-scrum
- 201209-scrum
- 201210-scrum
- 201211-scrum
- 201214-scrum
- 201215-scrum
- 201216-scrum
- 201217-scrum
์ฃผ์ฐจ๋ณ ํ๊ณ
์ฃผ์ฐจ๋ณ ํผ์ด์ธ์
๊ธฐ์ ๊ด๋ จ ๋ด์ฉ ๋ ผ์
- JWT Token์ด๋
- GraphQL ์ด๋?
- Apollo Server ํ๊ฒฝ ์ค์
- PR ๋จธ์ง์ ๋ฆฌ๋ทฐ ํ์ ์ค์
- apollo server์์ ์ฌ์ฉ์ ์ธ์ฆ ๊ด๋ฆฌ
- Mongoose ์์ TypeScript ์ฌ์ฉ
- graphql ์ธ์ฆ ๊ณผ์
- IKEYTAX ํ ํฐ์ธ์ฆ ์ ๋ต
- Custom Hook์ ์ด์ฉํ ํ ํฐ ์ฌ๋ฐ๊ธ โณ
- Cypress ์ Jest ๋ฅผ ํ์ฉํ ํ ์คํธ ๐งช
- Subscription์ ํตํ ์ค์๊ฐ ํต์ โก