๋ด ์์์ ์ง ์ฑ๊น ๋์ฐ๋ฏธ, ํฉ๋งจ (Spring ver.)
2023.01.16 ~
๋ฐํ์ง | ๊น๊ฒฝ๋ฆฐ | ์ฅ์ํฌ |
---|---|---|
dingding-21 | kkl4846 | laalaa31 |
๋ช ๋ช ๊ท์น(Naming Conventions)
- ์ด๋ฆ์ผ๋ก๋ถํฐ ์๋๊ฐ ์ฝํ์ง ์ ์๊ฒ ์ด๋ค.
-
ex)
// bad function q() { // ...stuff... } // good function query() { // ..stuff.. }
- ์ค๋ธ์ ํธ, ํจ์, ๊ทธ๋ฆฌ๊ณ ์ธ์คํด์ค์๋
camelCase
๋ฅผ ์ฌ์ฉํ๋ค.
-
ex)
// bad const OBJEcttsssss = {}; const this_is_my_object = {}; function c() {} // good const thisIsMyObject = {}; function thisIsMyFunction() {}
- ํด๋์ค๋ constructor์๋
PascalCase
๋ฅผ ์ฌ์ฉํ๋ค.
-
ex)
// bad function user(options) { this.name = options.name; } const bad = new user({ name: 'nope', }); // good class User { constructor(options) { this.name = options.name; } } const good = new User({ name: 'yup', });
- ํจ์ ์ด๋ฆ์ ๋์ฌ + ๋ช
์ฌ ํํ๋ก ์์ฑํ๋ค.
ex)
postUserInformation( )
- ์ฝ์ด ์ฌ์ฉ์ ์ต๋ํ ์ง์ํ๋ค.
- ์ด๋ฆ์ ๋ค ๋จ์ด ์ด์์ด ๋ค์ด๊ฐ๋ฉด ํ์๊ณผ ์์๋ฅผ ๊ฑฐ์น ํ ์ฌ์ฉํ๋ค
๋ธ๋ก(Blocks)
- ๋ณต์ํ์ ๋ธ๋ก์๋ ์ค๊ดํธ({})๋ฅผ ์ฌ์ฉํ๋ค.
-
ex)
// bad if (test) return false; // good if (test) return false; // good if (test) { return false; } // bad function() { return false; } // good function() { return false; }
- ๋ณต์ํ ๋ธ๋ก์
if
์else
๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐelse
๋if
๋ธ๋ก ๋์ ์ค๊ดํธ( } )์ ๊ฐ์ ํ์ ์์น์ํจ๋ค.
-
ex)
// bad if (test) { thing1(); thing2(); } else { thing3(); } // good if (test) { thing1(); thing2(); } else { thing3(); }
์ฝ๋ฉํธ(Comments)
- ๋ณต์ํ์ ์ฝ๋ฉํธ๋
/** ... */
๋ฅผ ์ฌ์ฉํ๋ค.
-
ex)
// good /** * @param {String} tag * @return {Element} element */ function make(tag) { // ...stuff... return element; }
- ๋จ์ผ ํ์ ์ฝ๋ฉํธ์๋
//
์ ์ฌ์ฉํ๊ณ ์ฝ๋ฉํธ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ ์ฝ๋์ ์๋ถ์ ๋ฐฐ์นํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฝ๋ฉํธ์ ์์ ๋น ํ์ ๋ฃ๋๋ค.
-
ex)
// bad const active = true; // is current tab // good // is current tab const active = true; // good function getType() { console.log('fetching type...'); // set the default type to 'no type' const type = this._type || 'no type'; return type; }
๋ฌธ์์ด(Strings)
- ๋ฌธ์์ด์๋ ์ฑํฌ์ฟผํธ
''
๋ฅผ ์ฌ์ฉํ๋ค.
-
ex)
// bad const name = "Capt. Janeway"; // good const name = 'Capt. Janeway';
- ํ๋ก๊ทธ๋จ์์ ๋ฌธ์์ด์ ์์ฑํ๋ ๊ฒฝ์ฐ๋ ๋ฌธ์์ด ์ฐ๊ฒฐ์ด ์๋
template strings
๋ฅผ ์ด์ฉํ๋ค.
-
ex)
// bad function sayHi(name) { return 'How are you, ' + name + '?'; } // bad function sayHi(name) { return ['How are you, ', name, '?'].join(); } // good function sayHi(name) { return `How are you, ${name}?`; }
ํจ์(Functions)
- ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
-
ex)
var arr1 = [1, 2, 3]; var pow1 = arr.map(function (x) { // ES5 Not Good return x * x; }); const arr2 = [1, 2, 3]; const pow2 = arr.map(x => x * x); // ES6 Good
์กฐ๊ฑด์๊ณผ ๋ฑ๊ฐ์(Comparison Operators & Equality)
==
์ด๋!=
๋ณด๋ค===
์!==
์ ์ฌ์ฉํ๋ค.- ๋จ์ถํ์ ์ฌ์ฉํ๋ค.
-
ex)
// bad if (name !== '') { // ...stuff... } // good if (name) { // ...stuff... }
- ๋น๋๊ธฐ ํจ์๋ฅผ ์ฌ์ฉํ ๋
Promise
ํจ์์ ์ฌ์ฉ์ ์ง์ํ๊ณasync
,await
๋ฅผ ์ฐ๋๋ก ํ๋ค
๐ฑ git branch ์ ๋ต
main branch
: ๋ฐฐํฌ ๋จ์ branch
develop branch
: ์ฃผ์ ๊ฐ๋ฐ branch, main merge ์ ๊ฑฐ์น๋ branch
feature branch
: ๊ฐ์ ๊ฐ๋ฐ branch
- ํ ์ผ jira issue ๋ฑ๋ก ํ jira issue ๋ฒํธ๋ก branch ์์ฑ ํ ์์
- ex) feature/
jira issue num
- ex) feature/
- ํด๋น branch ์์
์๋ฃ ํ PR ๋ณด๋ด๊ธฐ
- ํญ์ local์์ ์ถฉ๋ ํด๊ฒฐ ํ โ remote์ ์ฌ๋ฆฌ๊ธฐ
- reviewer์ ์๋ก tagํ code-review
- comment ์ merge ๋ถ๊ฐ!
- main
- develop
- feature
โโโ PS-13
โโโ PS-14
๐ป git commit message convention
ex) feat: User API ํ์ผ ์ถ๊ฐ
- feat : ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
- fix : ๋ฒ๊ทธ ์์
- docs : ๋ฌธ์ ๊ด๋ จ
- style : ์คํ์ผ ๋ณ๊ฒฝ (ํฌ๋งคํ
์์ , ๋ค์ฌ์ฐ๊ธฐ ์ถ๊ฐ, โฆ)
- refactor : ์ฝ๋ ๋ฆฌํฉํ ๋ง
- test : ํ
์คํธ ๊ด๋ จ ์ฝ๋
- build : ๋น๋ ๊ด๋ จ ํ์ผ ์์
- ci : CI ์ค์ ํ์ผ ์์
- perf : ์ฑ๋ฅ ๊ฐ์
- chore : ๊ทธ ์ธ ์์ํ ์์