์๋๋ TOAST UI ์ฝ๋ฉ ์ปจ๋ฒค์ ์์ ๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ์ ์์ฝํ ๋ด์ฉ์ ๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ ๋์ค ๋ชจํธํ๊ฑฐ๋ ์๋์ ์๋ ๋ถ๋ถ์ด ์๊ธธ ์ ์๋ฌธ ๋ด์ฉ์ ๋ฐ๋ฆ ๋๋ค.
- ํ ์ค์ ํ๋์ ๋ฌธ์ฅ๋ง ํ์ฉ
- ๋ฌธ์ฅ ์ข
๋ฃ ์
;
์ฌ์ฉ
๊ธฐ๋ณธ์ ์ผ๋ก ์นด๋ฉ ์ผ์ด์ค ์ฌ์ฉ
- ์์ : ์๋ฌธ ๋๋ฌธ์ ์ค๋ค์ดํฌ ํ๊ธฐ๋ฒ ์ฌ์ฉ ex)
SYMBOLIC_CONSTANTS
- ์์ฑ์ : ๋๋ฌธ์ ์นด๋ฉ ์ผ์ด์ค ์ฌ์ฉ ex)
class ConstructorName
- ๋ณ์, ํจ์ : ์นด๋ฉ ์ผ์ด์ค ์ฌ์ฉ
let variableName;
// ๋ฐฐ์ด - ๋ณต์ํ ์ด๋ฆ
const dogs = [];
// ์ ๊ท ํํ์ - 'r'๋ก ์์
const rDesc = /.*/;
function getPropertyName () {
...
}
// ์ด๋ฒคํธ ํธ๋ค๋ฌ - 'on'์ผ๋ก ์์
const onClick = () => {};
// ๋ถ๋ฆฐ ๋ฐํ ํจ์ - 'is'๋ก ์์
let isAbailable = false;
- ๋ฒ์ฉ์ ์ธ ๋๋ฌธ์ ์ฝ์ด : URL, HTML ๋ฑ์ ๋๋ฌธ์ ๊ทธ๋๋ก ์ฌ์ฉ ex)
parseHTML
- ๋ณ์ ์ ์ธ ๋ฐฉ์
var
๋ ์ฌ์ฉํ์ง ์๋๋ก ํจconst
: ๊ฐ์ด ๋ณํ์ง ์๋ ๋ณ์let
: ๊ฐ์ด ๋ณํ๋ ๋ณ์
- ๋ณ์ ์ ์ธ ์์
const
๋ฅผlet
๋ณด๋ค ์์ ์ ์ธconst
์let
์ ์ฌ์ฉ ์์ ์ ์ ์ธ ๋ฐ ํ ๋น
- ์ธ๋ถ ๋ชจ๋๊ณผ ๋ด๋ถ ๋ชจ๋์ ๊ณต๋ฐฑ์ ๋์ด ๊ตฌ๋ถํด์ ์ฌ์ฉ -> ๊ฐ๋ ์ฑ ํฅ์
// ์ธ๋ถ ๋ชจ๋
const lodash = require('lodash');
const $ = require(jquery);
const handlebars = require('handlebars');
const d3 = require('d3');
// ๋ด๋ถ ๋ชจ๋
const pluginFactory from '../../factories/pluginFactory';
const predicate from '../../helpers/predicate';
const raphaelRenderUtil from '../../plugins/raphaelRenderUtil';
๋ฐฐ์ด๊ณผ ๊ฐ์ฒด๋ ๋ฆฌํฐ๋ด๋ก ์ ์ธ
// Bad
const emptyArr = new Array();
const arr = new Array(1, 2, 3, 4, 5);
// Good
const emptyArr = [];
const arr = [1, 2, 3, 4, 5];
// Bad
const emptyObj = new Object();
const obj = new Object();
// Good
const emptyObj = {};
const obj = {
pro1: 'val1',
pro2: 'val2'
};
- ๋ฐฐ์ด ๋ณต์ฌ ์ ์ํ๋ฌธ์ด ์๋ ์ ๊ฐ ์ฐ์ฐ์ ์ฌ์ฉ
// ๋ฐฐ์ด itemsCopy์ items๋ฅผ ๋ณต์ฌํ ๊ฒฝ์ฐ
// Bad
for (i = 0; i < len; i++) {
itemsCopy[i] = items[i];
}
// Good
const itemsCopy = [...items];
- ๋ฐฐ์ด์ ๊ดํธ, ์์ ์ค ํ๋๋ผ๋ ์ค ๋ฐ๊ฟ์ด ์๋ค๋ฉด ๋์ผํ๊ฒ ๋ชจ๋ ์ค๋ฐ๊ฟ ์ ์ฉ
- ๊ฐ์ฒด ํ๋กํผํฐ๊ฐ 1๊ฐ์ผ ๊ฒฝ์ฐ ํ ์ค ์ ์ ๊ฐ๋ฅ, 2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ๊ฐํ ๊ฐ์
// Bad
const obj = {foo: 'a', bar: 'b'}
// Good
const obj = {foo: 'a'};
const obj = {
foo: 'a'
};
- ๋ฉ์๋ ๋ฌธ๋ฒ ์ฌ์ฉ ์ ๋ฉ์๋ ์ฌ์ด์ ๊ฐํ ์ถ๊ฐ
class MyClass {
foo() {
//...
}
bar() {
//...
}
}
- ํจ์๋ ์ฌ์ฉ ์ ์ ์ ์ธํ๊ณ ํจ์ ์ ์ธ๋ฌธ์ ๋ณ์ ์ ์ธ๋ฌธ ๋ค์์ ์ค๋๋ก ํจ
- ํจ์๋ ์์ฑ์๊ฐ ์๋ ์ ์ธ์, ํํ์์ผ๋ก ์ ์ธ
// Bad - ํจ์ ์์ฑ์ ์ฌ์ฉ
const doSomething = new Function('param1', 'param2', 'return param1 + param2;');
// Good - ํจ์ ์ ์ธ์ ์ฌ์ฉ
function doSomething(param1, param2) {
return param1 + param2;
}
// Good - ํจ์ ํํ์ ์ฌ์ฉ
const doSomething = function(param1, param2) {
return param1 + param2;
};
- ํจ์ ํํ์ ๋์ ํ์ดํ ํจ์ ์ฌ์ฉ
// Bad - ํจ์ ํํ์
[1, 2, 3].map(function (x) {
const y = x + 1;
return x * y;
});
// Good - ํ์ดํ ํจ์
[1, 2, 3].map(x => {
const y = x + 1;
return x * y;
});
- ์์์ ๋ฐํ ์ต๋ํ ํ์ฉ -> ํจ์์ ๋ณธ์ฒด๊ฐ ํ๋์ ํํ์์ผ ๋ ์ค๊ดํธ ์๋ต
// Bad
[1, 2, 3].map(number => {
const nextNumber = number + 1;
`A string containing the ${nextNumber}.`;
});
// Good - ์์์ return ์ฌ์ฉ -> ์์์ ๋ฐํ ์ ํจ์ ๋ณธ๋ฌธ ์ ๊ฐํ์ ํ์ง ์์
[1, 2, 3].map(number => `A string containing the ${number + 1}.`);
- ๋ณ์ ๋ฑ์ ์กฐํฉํด์ ๋ฌธ์์ด ์์ฑ ์ ํ ํ๋ฆฟ ๋ฌธ์์ด ์ด์ฉ -> ๋ฌธ์์ด์ ์ฝ๊ณ ๋ช ํํ๊ฒ ๋ค๋ฃจ๊ธฐ ์ํจ
function sayHi(name) {
return `How are you, ${name}?`;
}
- ํ ์ค์ง๋ฆฌ ๋ธ๋ก์ผ ๊ฒฝ์ฐ๋ผ๋ {}๋ฅผ ์๋ตํ์ง ์๊ณ , ์ค๋ฐ๊ฟ ์ถ์ฒ
- ํค์๋์ ์กฐ๊ฑด๋ฌธ ์ฌ์ด ๋น์นธ ์ฌ์ฉ ex)
a < 1
switch-case
์ฌ์ฉ ์ ์ฒซ ๋ฒ์งธ case๋ฌธ์ ์ ์ธํ case๋ฌธ ์ฌ์ฉ ์ด์ ์ ๊ฐํ
switch (value) {
case 1:
doSomething1();
break;
case 2:
doSomething2();
break;
default:
throw new Error('This shouldn\'t happen.');
}
- ์ฃผ์ ์ฌ์ฉ ์ ์ฝ๋์ ๋ง์ถฐ์ ๋ค์ฌ์ฐ๊ธฐ ํจ
- ์ฌ๋ฌ ์ค ์ฃผ์ ์ฌ์ฉ ์
*
์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ๋ง์ถค
- ํค์๋, ์ฐ์ฐ์์ ๋ค๋ฅธ ์ฝ๋ ์ฌ์ด์ ๊ณต๋ฐฑ์ด ์์ด์ผ ํจ ex)
if (typeof str === 'string')
- ์ฝค๋ง ๋ค์์ ๊ฐ์ด ์ฌ ๊ฒฝ์ฐ ๊ณต๋ฐฑ์ด ์์ด์ผ ํจ
// Bad - ์ฝค๋ง ๋ค ๊ณต๋ฐฑ
const arr = [1,2,3,4];
// Good
const arr = [1, 2, 3, 4];
- ์กฐ๊ฑด ํ์ธ ์ ์ผ์ค ๋ฑํธ ์ฐ์ฐ์
===
,!==
์ฌ์ฉ