code convention - connect-foundation/2019-07 GitHub Wiki
air-bnb guide line ์ ๋ฐํ์ผ๋ก, clean code ์ฒ ํ์ ์ถ๊ฐ
๋ชจ๋ ๊ท์น์ ์๋ก๋ฅผ ๋ฐฐ๋ คํ๊ณ ์ดํดํ๊ธฐ ์ํด ์กด์ฌํ๋ค!
๋ชจ๋ ์ฝ๋๋ ๋ค๋ฅธ ์ฌ๋์ด ๋ด๋ ์ดํดํ ์ ์๋๋ก ์์ฑํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
Airbnb JavaScript ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ๋ค. ์๋ ์ธ๋ถ ๋ด์ฉ์ ๋์์์ง ์์ ๋ด์ฉ์ Airbnb์ ๊ฐ์ด๋ ๋ผ์ธ์ ์ฐธ๊ณ ํ๋ค.
-
\t
์ ์ฌ์ฉํ์ง ์๊ณ space๋ก ์ฌ์ฉํ๋ค. -
VSCode์ Prettier ์ค์ ๋ฑ์ ํตํด ํต์ผํ๋๋ก ํ๋ค.
-
- ๋ณ์, ํจ์, ์ธ์คํด์ค๋ Camel Case๋ฅผ ์ฌ์ฉํ๋ค.
ํจ์์ ๊ฒฝ์ฐ
๋์ฌ+๋ช ์ฌ
ํํ๋ก ๊ตฌ์ฑํ๋ค. - Class, Contructor๋ Pascal Case๋ฅผ ์ฌ์ฉํ๋ค.
- ๊ธ์์ ๊ธธ์ด
- ๊ธ์์ ๊ธธ์ด๋ 20์ ์ด๋ด๋ก ์ ํํ๋ค.
- 4๋จ์ด ์ด์์ด ๋ค์ด๊ฐ๊ฑฐ๋, ๋ถ๋์ดํ๊ฒ 20์ ์ด์์ด ๋๋ ๊ฒฝ์ฐ ํ์๊ณผ์ ์์๋ฅผ ๊ฑฐ์น๋ค.
- flag๋ก ์ฌ์ฉ๋๋ ๋ณ์
- Boolean์ ๊ฒฝ์ฐ
์กฐ๋์ฌ+flag ์ข ๋ฅ
๋ก ๊ตฌ์ฑ๋๋ค.ex) isNum, hasNum
- Boolean์ ๊ฒฝ์ฐ
- ์ฝ์นญ์ ์ฌ์ฉ
- ์ฝ์ด๋ ๋๋๋ก ์ฌ์ฉํ์ง ์๋๋ค. ex) Not Allow) index> idx, count > cnt, array > arr, to > 2
- ๋ถ๋์ดํ๊ฒ ์ฝ์ด๊ฐ ํ์ํ๋ค๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ ํ์๊ณผ์ ์์๋ฅผ ๊ฑฐ์น๋ค.
- ๋ณ์, ํจ์, ์ธ์คํด์ค๋ Camel Case๋ฅผ ์ฌ์ฉํ๋ค.
-
- tab์ ์ต๋ depth๋ 4๋ก ์ ํํ๋ค.
- ์ด ์ด์์ผ๋ก depth๊ฐ ๊น์ด์ง๋ฉด ํจ์๋ฅผ ํตํด ๋๋ ์ ์๋๋ก ํ๋ค.
- ๊ทธ ์ด์์ผ๋ก ๊ฐ์ ํ ์ ์๋ค๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ, ํ์๋ค๊ณผ์ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํตํด ๊ฐ์ ํ๋ค.
function func() { //tab1 if(){ //tab2 array.reduce((pre, cur) => { //tab3 if(cur == status){ //tab4 } } } }
-
- ํ์ค์
//
๋ก ์ ๊ณ , ๊ทธ ์ด์์/** */
๋ก ์ ๋๋ค.// ํ์ค ์ฃผ์ /** * ์ฌ๋ฌ์ค * ์ฃผ์ */
- ํจ์์ ๋ํ ์ฃผ์
- backend์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ ํจ์์ ๊ฒฝ์ฐ, ๋ชจ๋ํ๋ฅผ ํตํด ํ๋์ ํ์ผ๋ก ๊ด๋ฆฌํ๋ค.
- ํ๋์ ํ์ผ์ ์์ ๋ถ๋ถ์ ์ฃผ์์ผ๋ก ์์ธ ๋ด์ฉ์ ์์ฑํ๋ค.
- ํจ์์ ์ ์ฒด ๊ธฐ๋ฅ์ ๋ํ ์ค๋ช
- ํจ์์ ํ๋ผ๋ฏธํฐ์ ๋ํ ์ค๋ช (type: ..., ์ญํ )
- ํ์ค์
-
- if๋ฌธ์ ์คํ๋ฌธ์ด ํ ์ค์ผ ๋
- ๋ฐ๋ณต๋ฌธ, ํจ์์ ํ์ถ
- ํ์ค๋ก ์์ฑํ๋ค.
- ๋ค๋ง, ๋ถ๋์ดํ๊ฒ ๋ ์ค ์ด์์ด ๋๋ ๊ฒฝ์ฐ ์ฃผ์์ผ๋ก ํ๊ธฐํ๊ณ ํ์ถ๋ฌธ์ ๊ฒฝ์ฐ ์๋์ ํ์นธ์ ๋์ฐ๊ณ ๋ก์ง์ ์์ฑํ๋ค.
if(trigger) return; // logic start
- (arguments)์ดํ์ bracket
- ์๋์ ๋ฐฉ๋ฒ์ผ๋ก ํต์ผํ๋ค.
function func(){ //... }
- ์๋์ ๋ฐฉ๋ฒ์ผ๋ก ํต์ผํ๋ค.
- ๋ฐ๋ณต๋ฌธ, ํจ์์ ํ์ถ
- if๋ฌธ์ ์คํ๋ฌธ์ด ํ ์ค์ผ ๋
-
- magic number๋ ๋ฌธ์์ด์ ๋น๊ตํ ๊ฒฝ์ฐ,
constant.js
์ ์์ํ ํ์ฌ ๊ด๋ฆฌํ๋ค.//constant.js const LEFT = 'left'; //other_logic_file.js if(dir === LEFT){ //... } // ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๊ธ์งํ๋ค. if(direction === โleftโ)
- ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฐํํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ
- constant.js์ ์์๋ฅผ ๋๋ฌธ์๋ก ์์ฑํ๋ค.
- const ์ด์ฉ๊ตฌ_ERROR_MESSAGE = โ์ด์ฉ๊ตฌ์ ์คํจํ์ต๋๋คโ;
- magic number๋ ๋ฌธ์์ด์ ๋น๊ตํ ๊ฒฝ์ฐ,
-
- ๋ถ๊ฐํผํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ else if์ ์ฌ์ฉ์ ์ต๋ํ ์ค์ธ๋ค.
ex) ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ํ์ถํ๋ if๋ก ๊ตฌํํ๋ ๋ฑ
- ๋ถ๊ฐํผํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ else if์ ์ฌ์ฉ์ ์ต๋ํ ์ค์ธ๋ค.
-
- ํ ์คํธ๊ฐ ํ์ํ ๊ธฐ๋ฅ์ด๋ฉด arrow function์ ์ฌ์ฉํ์ง ์๋๋ค.
- ํ์ค๋ก ๋๋๋ ๊ฒฝ์ฐ, ํ ์คํธ๊ฐ ํ์์๋ ๊ฒฝ์ฐ ๋ฑ์๋ arrow function์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
-
- ํจ์์ ์ธ์๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒ์ 3๊ฐ๊น์ง ๊ฐ๋ฅํ๋ค.
function foo(x, y, z); // 4๊ฐ ๋ถํฐ๋ ๊ฐ์ฒด๋ก ๋ฌถ์ด์ ๋ณด๋ธ๋ค. function foo(object);
- ํจ์์ ์ธ์๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒ์ 3๊ฐ๊น์ง ๊ฐ๋ฅํ๋ค.
-
-
Promise
ํจ์์ ์ฌ์ฉ์ ์ง์ํ๊ณasync, await
๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ค. - ๋ค๋ง ๋ก์ง์ ์ง๋ ๋ฐ ์์ด promise๋ฅผ ๋ถ๊ฐํผํ๊ฒ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์ฃผ์์ผ๋ก ํ์ํ๊ณ commit์ ๊ทธ ์ด์ ๋ฅผ ์์ฑํ๋ค.
-
-
- DB ์ด๋ฆ (์คํค๋ง)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช ์ ์์ด ๋๋ฌธ์๋ก ๊ตฌ์ฑํ๋ค.
- ๊ธธ์ด๋ 8์ ์ด๋ด๋ก ๊ตฌ์ฑํ๋ค.
- ํ
์ด๋ธ
- ํ
์ด๋ธ์ ์์ด ๋๋ฌธ์๋ก ๊ตฌ์ฑ,
๋๋ถ๋ฅ_์๋ฏธ์๋ ํ ์ด๋ธ ๋ช
ํํ๋ก ์์ฑํ๋ค. - ํ ์ด๋ธ ๋ช ์ ๊ตฌ์ฑ์ ์ต๋ 3๋จ์ด๊น์ง ์ฌ์ฉํ ์ ์๋ค.
- ๊ฐ ๋จ์ด์ ์ต๋ ๊ธธ์ด๋ 8์ ์ด๋ด๋ก ๊ตฌ์ฑํ๋ค.
- ์ต๋ ๊ธธ์ด๋ 26์ ์ด๋ด๋ก ๊ตฌ์ฑํ๋ค.
- ํ
์ด๋ธ์ ์์ด ๋๋ฌธ์๋ก ๊ตฌ์ฑ,
- ์ปฌ๋ผ
-
์ปฌ๋ผ์ snake ํ๊ธฐ๋ฒ์ ๋ฐ๋ฅด๊ณ ,
์๋ฏธ์๋ ์ปฌ๋ผ๋ช _์ ๋ฏธ์ฌ
ํํ๋ก ์์ฑํ๋ค. -
์ปฌ๋ผ์ ์ฑ์ง์ ๋ํ๋ด๋ ์ ๋ฏธ์ฌ๋ฅผ ์ฌ์ฉํ๋ค. (์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ํ์ ์ ๋ํ๋ด๋ ๊ฒ์ด ์๋์ ์ ์)
์ ๋ฏธ์ฌ list
- CNT : count ์กฐํ์ ๋ฑ์ count์ ์ฌ์ฉ๋๋ค.
- DT : date ๋ ์ง์ธ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ธ๋ค.
- FK : foreign key๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํ๋ค.
- FL : flag 0, 1๋ก ๊ตฌ์ฑ๋ ์ํ๋ฅผ ๋ํ๋ธ๋ค.
- ID : id ๊ณ์ ๋ฑ์ ์์ด๋๋ฅผ ๋ํ๋ธ๋ค.
- NM : name ์ด๋ฆ, ๋ณ๋ช ๋ฑ ์๋ณ ๊ฐ๋ฅํ๋ฉฐ ์ค๋ณต์ด ๊ฐ๋ฅํ ๋ฌธ์์ด ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉํ๋ค.
- NO : number ๋์ด, ํด๋ํฐ ๋ฒํธ ๋ฑ ์ซ์๋ฅผ ๋ํ๋ธ๋ค.
- ORD : order ์ ๋ ฌ์ ์ฌ์ฉ๋๋ index๋ฅผ ๋ํ๋ธ๋ค.
- PK : primary key๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํ๋ค.
- ST : status ํ์์ ๋ฑ๊ธ, ์ฑ๋ณ ๋ฑ์ ์ํ๋ฅผ ๋ํ๋ธ๋ค.
-
- DB ์ด๋ฆ (์คํค๋ง)