์ข์ ์ด๋ฆ์ผ๋ก ์ ์ฝํ๋ ์๊ฐ์ ์ข์ ์ด๋ฆ์ ์ง๊ธฐ ์ํด ๊ณ ๋ฏผํ๋ ์๊ฐ๋ณด๋ค ํจ์ฌ ๋ ํฌ๋ค.
์ด ์ฅ์์๋ ์ด๋ฆ์ ์ ์ง๋ ๊ฐ๋จํ ๊ท์น์ ๋ช ๊ฐ์ง ์๊ฐํ๋ค.
์๋๋ฅผ ๋ถ๋ช ํ ๋ฐํ๋ผ
์๋๊ฐ ๋ค์ด๋๋ ์ด๋ฆ์ ์ฝ๋ ์ดํด์ ๋ณ๊ฒฝ์ ์ฝ๊ฒ ๋ง๋ ๋ค.
๋ฐ๋ก ์ฃผ์์ด ํ์ํ๋ค๋ฉด ์๋๊ฐ ๋ถ๋ช ํ์ง ์๋ค๋ ์๋ฏธ๋ค. ์ด๋ฆ์ ์ง๊ธฐ ์ํด ๋ค์ ์ง๋ฌธ์ ๋ชจ๋ ๋ตํด์ผ ํ๋ค.
- ๋ณ์ ๋๋ ํจ์, ํด๋์ค์ ์กด์ฌ ์ด์ ๋?
- ์ํํ๋ ๊ธฐ๋ฅ์?
- ์ฌ์ฉ ๋ฐฉ๋ฒ?
์์
// ๐ด Bad
const getTheme = (theList: number[][]) => {
const list1: number[][] = [[]];
theList.forEach((x) => {
if (x[0] === 4) {
list1.push(x);
}
});
return list1;
};
์ด ์ฝ๋์ ๋ฌธ์ ์ ์ ์ฝ๋์ ํจ์ถ์ฑ์ ์๋ค. ์ฝ๋์ ๋งฅ๋ฝ์ด ๋ช ์์ ์ผ๋ก ๋๋ฌ๋์ง ์๋๋ค.
์ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ๋ค์์ ์ ๋ณด๋ฅผ ์๊ณ ์์ด์ผ ํ๋ค.
- theList์ ๋ฌด์์ด ๋ค์ด์๋๊ฐ
- theList์์ 0๋ฒ์งธ ๊ฐ์ด ์ด์งธ์ ์ค์ํ๊ฐ
- ๊ฐ 4๋ ๋ฌด์จ ์๋ฏธ์ธ๊ฐ
- ํจ์๊ฐ ๋ฐํํ๋ ๋ฆฌ์คํธ list1์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋๊ฐ
์ด ์ ๋ณด๊ฐ ์ฝ๋์ ๋๋ฌ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ ์๋ ์ด ์ฝ๋๊ฐ ํ๋ ์ผ์ ์ง์ํ๊ธฐ ์ด๋ ต๋ค.
์ด ์ฝ๋๋ ์ฌ์ค ์ง๋ขฐ์ฐพ๊ธฐ ๊ฒ์์ ์ผ๋ถ์ด๋ค. ์๋ฏธ์๋ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด๋ณด์.
// ๐ข Good
const STATUS_VALUE = 0
const FLAGGED = 4
const getFlaggedCells = (gameBoard: number[][]) => {
const flaggedCells: number[][] = [[]];
gameBoard.forEach((cell) => {
if (cell[STATUS_VALUE] === FLAGGED) {
flaggedCells.push(cell);
}
});
return flaggedCells;
};
์ฝ๋์ ๋จ์์ฑ์ ๋ณํ์ง ์์์ง๋ง ์ฝ๋๋ ๋์ฑ ๋ช ํํด์ก๋ค.
๊ฐ ๊ฐ๋ ์ ์ด๋ฆ์ ๋ถ์ธ๊ฒ ๋ง์ผ๋ก ์ฝ๋๊ฐ ํจ์ฌ ์ฝ๊ธฐ ์ฌ์์ก์์ ์ ์ ์๋ค.
๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ํผํ๋ผ
๊ทธ๋ฆ๋ ๋จ์๋ ์ฝ๋ ์๋ฏธ๋ฅผ ํ๋ฆฐ๋ค.
- ๋๋ฆฌ ์ฐ์ด๋ ์๋ฏธ๊ฐ ์๋ ๋จ์ด๋ฅผ ๋ค๋ฅธ ์๋ฏธ๋ก ์ฌ์ฉํ๋ฉด ์๋๋ค.
- ์ค์ ๋ฐฐ์ด ํ์
์ด ์๋๋ผ๋ฉด
accountList
,accountArray
๋ผ ๋ช ๋ช ํ์ง ์๋๋ค.
- ์ค์ ๋ฐฐ์ด ํ์
์ด ์๋๋ผ๋ฉด
- ์๋ก ํก์ฌํ ์ด๋ฆ์ ์ฌ์ฉํ์ง ์๋๋ก ์ฃผ์ํ๋ค.
- ์ ์ฌํ ๊ฐ๋
์ ์ ์ฌํ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค.
- ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ ํ๊ธฐ๋ฒ์ ๊ทธ๋ฆ๋ ์ ๋ณด์ด๋ค.
- ๋ง์ ๊ฐ๋ฐ์๋ ์ฝ๋ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ๋จ๋ ์ด๋ฆ๋ง ๋ณด๊ณ ๊ฐ์ฒด๋ฅผ ์ ํํ๋ค.
- ์ ์ฌํ ๊ฐ๋ ์ด ์ํ๋ฒณ ์์ผ๋ก ๋์ค๋ฉฐ, ๊ฐ ๊ฐ๋ ์ฐจ์ด๊ฐ ๋ช ๋ฐฑํ ๋ ์ด ๊ธฐ๋ฅ์ ๋งค์ฐ ์ ์ฉํด์ง๋ค.
์๋ฏธ ์๊ฒ ๊ตฌ๋ถํ๋ผ
๊ฐ์ ์ค์ฝํ์์ ๋ณ์๋ฅผ ๊ตฌ๋ถํ ๋, ์ฐ์๋ ์ซ์๋ฅผ ๋ง๋ถ์ด๊ฑฐ๋ ๋ถ์ฉ์ด๋ฅผ ์ถ๊ฐํ์ง ๋ง ๊ฒ
- ์๋์ ์ธ ์ด๋ฆ๊ณผ ์ ๋ฐ๋๊ฐ ๋๋ค. ์๋ฌด๋ฐ ์ ๋ณด๋ ์ ๊ณตํ์ง ๋ชปํ๋ค.
- ์ฝ๋ ์ฌ๋์ด ๊ฐ ๋ณ์์ ์ฐจ์ด๋ฅผ ์ ์ ์๋๋ก ์ง์ด์ผ ํ๋ค.
- ๐ด
ProductInfo
↔ProductData
- ๐ด
money
↔moneyAmount
- ๐ด
๋ฐ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
- ์ฌ๋์ ๋จ์ด์ ๋ฅ์ํ๋ค.
- ๋ฐ์ํ๊ธฐ ์ด๋ ค์ด ์ด๋ฆ์ ํ ๋ก ํ๊ธฐ ํ๋ค๋ค.
const genymdhms = new Date() // ๐ด ์ ์ผ ๋ฌด๋ค ํ์ฆ ๊ฐ์ด ์ด์ํด์!
const generationTimestamp = new Date() // ๐ข Generation Timestamp ๊ฐ์ด ์ด์ํ๊ตฐ์!
ํ์๋ ์ง์ ์ธ ๋ํ๊ฐ ๊ฐ๋ฅํ๋ค๐
๊ฒ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
- ๋ฌธ์ ํ๋๋ฅผ ์ฌ์ฉํ๋ ์ด๋ฆ์ ์ฝ๊ฒ ๋์ ๋์ง ์๋๋ค
- ๊ฒ์ ์ฉ์ด์ฑ์ ๊ด์ ์์ ๊ธด ์ด๋ฆ์ด ์งง์ ์ด๋ฆ๋ณด๋ค ์ข๋ค.
- ๊ฐ๋จํ ๋ฉ์๋์์ ๋ก์ปฌ ๋ณ์๋ ์งง์๋ ๊ด์ฐฎ์ง๋ง ๋ฒ์๊ฐ ์ปค์ง ์๋ก ์ด๋ฆ๋ ๊ธธ์ด์ง๋ ๊ฒ์ด ์ข๋ค.
์ธ์ฝ๋ฉ์ ํผํ๋ผ
์ด๋ฆ์ ํ์ ๊น์ง ๋ช ์ํ ํ์๋ ์๋ค.
- ๋ฌธ์ ํด๊ฒฐ์ ์ง์คํ๋ ๊ฒ์ ๋ฐฉํดํ๋ค.
- ์ธ์ฝ๋ฉํ ์ด๋ฆ์ ๊ฑฐ์ ๋ฐ์ํ๊ธฐ ์ด๋ ค์ฐ๋ฉฐ ์คํ๊ฐ ์๊ธฐ๊ธฐ ์ฝ๋ค.
- ํ์ ์ด ๋ฐ๋๋ฉด ๋ณ์๋ช ๋ ๋ฐ๊ฟ์ผํ๋ค.
- IDE์ ๋ฐ์ ์ผ๋ก ๋ฉค๋ฒ ๋ณ์, ์ธํฐํ์ด์ค, ํ์ ๋ฑ์ ๋ชจ๋ ๊ตฌ๋ถํ ์ ์๋ค.
๊ณผ๊ฑฐ์๋ ์ปดํ์ผ๋ฌ๊ฐ ํ์ ์ฒดํฌ๋ฅผ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ํ์ ์ ๋ํ ๋จ์๊ฐ ํ์ํ๋ค.
์์ฆ์ IDE์์ ํ์ ์ ํ์ธํ ์ ์๊ณ ๋ณ์๋ฅผ ์ ์ธํ ์์น์ ์ฌ์ฉํ๋ ์์น๊ฐ ๊ฐ๊น์์ง๋ ์ถ์ธ์ด๋ค.
// ๐ด Bad
type PointType = {x: number, y: number}
interface IShape {...}
// ๐ข Good
type Point = {x: number, y: number}
interface Shpae {...}
// IDE์์ type์ธ์ง interface์ธ์ง ๋ณ์์ธ์ง ๋ช
์์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์ด๋ฆ์ ๋ฃ์ง ์์๋ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๊ฐ์ ๋์ ํ์ ์ธ์ด์์๋ ํ์ ์ด ๋ณํ์ง ์์ ๊ฒฝ์ฐ ์ด๋ฆ์ ๋ช ์ํ๋ ๊ฒ์ด ์ ์ฉํ ๋๊ฐ ์์ ๊ฒ์ผ๋ก ์๊ฐ๋๋ค.
์์ ์ ๊ธฐ์ต๋ ฅ์ ์๋ํ์ง ๋ง๋ผ
๋ ์๊ฐ ์ฝ๋๋ฅผ ์ฝ์ผ๋ฉด์ ๋ณ์ ์ด๋ฆ์ ์์ ์ด ์๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ ์๊ฐํด์ผ ํ๋ค๋ฉด ๊ทธ ์ด๋ฆ์ ์ ์ ํ์ง ์๋ค.
๋๋ํ ํ๋ก๊ทธ๋๋จธ๋ ๋ณ์ r์ ์๋ฏธ๋ฅผ ์ธ์ ๋ ๊ธฐ์ตํ๋ค. ํ์ง๋ง ์ ๋ฌธ๊ฐ ํ๋ก๊ทธ๋๋จธ๋ ๋ช ๋ฃํจ์ด ์ต๊ณ ๋ผ๋ ์ฌ์ค์ ์ดํดํ๋ค.
ํด๋์ค ๋๋ ๊ฐ์ฒด์ ์ด๋ฆ
๋ช ์ฌ๋ ๋ช ์ฌ๊ตฌ๋ฅผ ์ฌ์ฉํ๊ณ ๋์ฌ๋ ์ง์ํ๋ค.
๋ถ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. (Data
, Info
๋ฑ)
๋ฉ์๋ ์ด๋ฆ
๋์ฌ๋ ๋์ฌ๊ตฌ๋ฅผ ์ฌ์ฉํ๋ค.
์ ๊ทผ์, ๋ณ๊ฒฝ์, ์กฐ๊ฑด์์๋ ๊ฐ๊ฐ get, set, is๋ฅผ ๋ถ์ธ๋ค.
ํ ๊ฐ๋ ์ ํ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋ผ
์ถ์์ ์ธ ๊ฐ๋ ํ๋๋น ๋จ์ด ํ๋๋ง ์ฌ์ฉํ๋ค. ์ผ๊ด์ฑ ์๋ ์ดํ๋ฅผ ์ฌ์ฉํ๋ค.
ex) fetch, retrieve, get ์ค ํ๋๋ง ์ ํํด ๊ณ ์ํ๋ค.
- ์ด๋ฆ์ด ๋ค๋ฅด๋ฉด ๋ ์๋ ํ์ ๋ ๋ค๋ฅด๋ฆฌ๋ผ ์๊ฐํ๋ค.
ํ ๋จ์ด๋ฅผ ๋๊ฐ์ง ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ์ง ๋ง๋ผ
๋ค๋ฅธ ๊ฐ๋ ์ ๊ฐ์ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๊ทธ๊ฒ์ ๋ง์ฅ๋์ ๋ถ๊ณผํ๋ค.
๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ ๋ฐํ๊ฐ์ ์๋ฏธ๊ฐ ๊ฐ๋ค๋ฉด ๋ฌธ์ ๊ฐ ์๋ค. ํ์ง๋ง ๋งฅ๋ฝ์ด ๋ค๋ฅธ๋ฐ๋ ์ผ๊ด์ฑ์ ๊ณ ๋ คํด ๋จ์ด๋ฅผ ์ ํํ๋ ๊ฒ์ ์ณ์ง ์๋ค.
const add = (x:number, y:number) => x + y
// ๐ด Bad
const addStudent = (student: Student) => {
rollBook.push(student)
}
// ๐ข Good
const insertStudent = (student: Student) => {
rollBook.push(student)
}
ํด๋ฒ ์์ญ์์ ๊ฐ์ ธ์จ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋๋ ํ๋ก๊ทธ๋๋จธ๋ผ๋ ์ฌ์ค์ ๋ช ์ฌํ๋ค.
- ์ ์ฐ ์ฉ์ด, ์๊ณ ๋ฆฌ์ฆ ์ด๋ฆ, ํจํด ์ด๋ฆ, ์ํ ์ฉ์ด ๋ฑ์ ์ฌ์ฉํด๋ ๊ด์ฐฎ๋ค.
- ๋ชจ๋ ์ด๋ฆ์ ๋ฌธ์ ์์ญ์์ ๊ฐ์ ธ์ค๋ ์ ์ฑ
์ ํ๋ช
ํ์ง ๋ชปํ๋ค.
- ๋งค๋ฒ ํด๋น ๋๋ฉ์ธ ์ ๋ฌธ๊ฐ์๊ฒ ์๋ฏธ๋ฅผ ๋ฌผ์ด์ผํ๊ธฐ ๋๋ฌธ
- ๊ธฐ์ ๊ฐ๋
์๋ ๊ธฐ์ ์ด๋ฆ์ด ๊ฐ์ฅ ์ ํฉํ๋ค.
- ex)
JobQueue
,historyStack
- ex)
์ ์ ํ ํ๋ก๊ทธ๋๋จธ ์ฉ์ด๊ฐ ์๋ค๋ฉด ๋ฌธ์ ์์ญ์์ ์ด๋ฆ์ ๊ฐ์ ธ์จ๋ค
ํด๋ฒ ์์ญ๊ณผ ๋ฌธ์ ์์ญ์ ๊ตฌ๋ถํ ์ ์์ด์ผ ํ๋ค.
๋ฌธ์ ์์ญ ๊ฐ๋ ๊ณผ ๊ด๋ จ์ด ๊น์ ์ฝ๋๋ผ๋ฉด ๋ฌธ์ ์์ญ์์ ์ด๋ฆ์ ๊ฐ์ ธ์์ผ ํ๋ค.
์๋ฏธ ์๋ ๋งฅ๋ฝ์ ์ถ๊ฐํ๋ผ
๋๋ค์ ์ด๋ฆ์ ์ค์ค๋ก ์๋ฏธ๊ฐ ๋ถ๋ช ํ์ง ์๋ค.
์ด๋ด ๋ ํด๋์ค, ํจ์, ์ด๋ฆ ๊ณต๊ฐ์ ์๋ฏธ๋ฅผ ๋ฃ์ด ๋งฅ๋ฝ์ ๋ถ์ฌํ๋ค. ๋ชจ๋ ๋ฐฉ๋ฒ์ด ์คํจํ๋ค๋ฉด ๋ง์ง๋ง ์๋จ์ผ๋ก ์ ๋์ด๋ฅผ ๋ถ์ธ๋ค.
const printGuessStatistics = (candidate: string, count: number) => {
let number: string;
let verb: string;
let pluralModifier: string;
if (count === 0) {
number = "no";
verb = "are";
pluralModifier = "s";
} else if (count === 1) {
number = "1";
verb = "is";
pluralModifier = "";
} else {
number = count.toString();
verb = "are";
pluralModifier = "s";
}
const guessMessage = `There ${verb} ${number} ${candidate}${pluralModifier}`;
console.log(guessMessage);
};
- ํจ์ ์ด๋ฆ์ ๋งฅ๋ฝ์ ์ผ๋ถ๋ง ์ ๊ณตํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ด ๋๋จธ์ง ๋งฅ๋ฝ์ ์ ๊ณตํ๋ค.
- ํจ์๋ฅผ ๋๊น์ง ์ฝ์ด์ผ number, verb, pluralModifier๋ผ๋ ๋ณ์ ์ธ ๊ฐ๊ฐ guess statistics ๋ฉ์์ง์ ์ฌ์ฉ๋๋ค๋ ์ฌ์ค์ด ๋๋ฌ๋๋ค. (๋ ์๊ฐ ์ง์ ๋งฅ๋ฝ์ ์ ์ถํด์ผ ํ๋ค!)
ํจ์๋ฅผ ์์ ์กฐ๊ฐ์ผ๋ก ์ชผ๊ฐ๊ณ ์ธ ๋ณ์๊ฐ ํ์คํ๊ฒ ๋ฉ์์ง์ ์ํ๋ค๋ ๋งฅ๋ฝ์ ๋ถ์ฌํด๋ณด์
๋ชจ๋ํ๋ Class ๋์ ํ์ผ๋ก ๋ถ๋ฆฌํด์ ๊ตฌํํด๋ณด์๋ค.
// makeGuessStatisticsMessage.ts
type MessageParts = {
number: string;
verb: string;
pluralModifier: string;
}; // makeGuessStatisticsMessage ๋ชจ๋ ๋ด ํ์
์ ์ธ๋ง์ผ๋ก๋ ๋งฅ๋ฝ์ด ๋ถ๋ช
ํด์ก๋ค.
export default function makeGuessStatisticsMessage(
candidate: string,
count: number
) {
const {number, verb, pluralModifier} = createPluralDependentMessageParts(count)
const guessMessage = `There ${verb} ${number} ${candidate}${pluralModifier}`;
return guessMessage
// ํจ์๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ฉ์์ง๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋ ์ง ํ์
ํ๊ธฐ ์ฌ์์ก๋ค.
}
function createPluralDependentMessageParts(count: number): MessageParts {
if (count === 0) {
return thereAreNoLetters();
} else if (count === 1) {
return thereIsOneLetter();
} else {
return thereAreManyLetters(count);
}
}
function thereAreManyLetters(count: number): MessageParts {
const number = count.toString();
const verb = "are";
const pluralModifier = "s";
return { number, verb, pluralModifier };
}
function thereIsOneLetter(): MessageParts {
const number = "1";
const verb = "is";
const pluralModifier = "";
return { number, verb, pluralModifier };
}
function thereAreNoLetters(): MessageParts {
const number = "no";
const verb = "are";
const pluralModifier = "s";
return { number, verb, pluralModifier };
}
๋ถํ์ํ ๋งฅ๋ฝ์ ์์ ๋ผ
- ์ผ๋ฐ์ ์ผ๋ก ์งง์ ์ด๋ฆ์ด ๊ธด ์ด๋ฆ๋ณด๋ค ์ข๋ค. ๋จ, ์๋ฏธ๊ฐ ๋ถ๋ช ํ ๊ฒฝ์ฐ์ ํํด์๋ค
- ์ด๋ฆ์ ๋ถํ์ํ ๋งฅ๋ฝ์ ์ถ๊ฐํ์ง ์๋๋ก ์ฃผ์ํ๋ค.
๊ฐ์ด ์คํฐ๋ํ์๋ ๋ถ๊ป์ ์์ ์ ๊ฒฝํ์ ๊ณต์ ํด์ฃผ์ จ๋ค.
์๋ก์ด ํผ์ณ๋ฅผ ๊ฐ๋ฐํ๋๋ฐ ํผ์ณ์ ์ฝ์๋ฅผ ๋ชจ๋ ๋ชจ๋์ ์ ๋์ด๋ก ๋ถํ๋ค๊ฐ ํํํ ์ ์ด ์์ผ์ จ๋ค๊ณ ํ๋ค.
// src/components/[ํผ์ณ๋ช
]
// ํผ์ณ์ ์ฝ์๊ฐ XYZ๋ผ๋ฉด,
// โ Bad
const useXYZTermsAgreement = () => {};
const useXYZProfit = () => {};
// โ
Good
const useTermsAgreement = () => {};
const useProfit = () => {};
- ์ด๋ฏธ ํผ์ณ ๊ด๋ จํ ๋ชจ๋ ์ฝ๋๋ [ํผ์ณ๋ช ]์ผ๋ก ๋ ํด๋ ๋ด๋ถ์ ์์นํด ์๋ค. TTT ์ ๋์ด๋ ๋ถํ์ํ๊ฒ ์ค๋ณต๋ ๋งฅ๋ฝ์ด๋ค.
- ๋ค๋ฅธ ํผ์ณ์์ ์ฌ์ฌ์ฉํ๊ธฐ ํ๋ค๋ค
๋ง๋ฌด๋ฆฌ
ํด๋ฆฐ์ฝ๋๋ Java ๊ธฐ๋ฐ์ผ๋ก ์ค๋ช ํ๋ ์ฑ ์ด๋ค.
์ด ์ฑ ์ ์จ์ ํ ๋ด ๊ฒ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด์๋ ๋ ํฐ ๊ด์ ์์ ์ ์์ ์๋๋ฅผ ํ์ ํ๊ณ , ๋ด ์ฃผ์ธ์ด๋ก ์์๋ฅผ ๋ฐ๊ฟ๋ณด๋ ๊ณผ์ ์ด ํ์ํ๋ค๊ณ ์๊ฐํ๋ค.
์คํฐ๋์ ์ค์ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ์๋ ํ๋ก ํธ์๋ ํ์ง์ ๋ถ์ด ๊ณ์ ์ ๊ฒฝํ์ ๊ณต์ ํ๊ณ ๊ฐ์ด ๊ณต๊ฐํ๋ฉด์ ๋ ํ๋ถํ๊ฒ ์ดํดํ ์ ์์๋ค.
์ด๋ฒ ์ฑํฐ๋ ๋ค์ด๋ฐ์์ ์์๋ ์ํ์ฐฉ์ค๋ก ์ต๋ํ๋ ์๋ น๋ค์ ์์ํ๊ณ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ ๋ฆฌํด์ฃผ๋ ์ฑํฐ์๋ค.