๊ธ์ ๋ชฉํ
2์ฃผ์ฐจ ๊ณตํต ํผ๋๋ฐฑ์ ํตํด 2์ฃผ์ฐจ์ ์ฝ๋๋ฅผ ๋๋์๋ณด๊ณ 3์ฃผ์ฐจ๋ฅผ ์์ํด๋ณผ ์๊ฐ์ด๋ค.
โป ํด๋น ๊ธ์ ์ฐ์ํํ ํฌ์ฝ์ค์์ ์ฌ๋ ค์ค 2์ฐจ ๊ณตํต ํผ๋๋ฐฑ์ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์ต๋๋ค. ๊ณตํต ํผ๋๋ฐฑ์ ํ๋ฆฌ์ฝ์ค ์ฐธ์ฌ์๋ค์๊ฒ ๊ฐ๋ณ์ ์ผ๋ก ๊ณต์ ๋ ๋งํฌ๊ฐ ์กด์ฌํ๋ฉฐ, ์ ๋ ํด๋น ๋งํฌ๋ ๊ณต์ ํ ์ ์๊ณ ๊ณตํต ํผ๋๋ฐฑ์ ํ์ธํ๋ ๊ณผ์ ์์์ ์๊ฐ๋ค์ ํด๋น ๊ธ์ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
2์ฃผ์ฐจ ํ๋ฆฌ์ฝ์ค ๊ณผ์ ์ ๋ํ ํ๊ธฐ
2์ฃผ์ฐจ์ ํ์ต ๋ชฉํ๋ ์ฌ๋ฌ ์ญํ ์ ์ํํ๋ ํฐ ํจ์๋ฅผ ๋จ์ผ ์ญํ ์ ์ํํ๋ ์์ ํจ์๋ค๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด์๋ค. 3์ฃผ์ฐจ ํ์ต ๋ชฉํ๋ ๊ด๋ จ๋ ํจ์๋ค์ ๋ฌถ์ด ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ๊ฐ์ฒด๋ค์ด ํ๋ ฅํ์ฌ ํ๋์ ํฐ ๊ธฐ๋ฅ์ ์ํํ๋๋ก ํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ง๊ธ๋ณด๋ Controller๋ฅผ ๋ง๋ค๋ฉด์ ์ด๋ฏธ ํ๋์ ํฐ ๊ธฐ๋ฅ์ ์ํํ๋ ํด๋์ค๋ฅผ ๊ตฌํํด๋ณธ ๊ฒ ๊ฐ๋ค. ์ด ๋ฐฉ๋ฒ์ ์์ฉํด, 3์ฃผ์ฐจ์๋ ํด๋์ค๋ฅผ ๋ ์ ๊ตํ๊ฒ ๋ง๋ค๊ณ , ํจ์์ ํด๋์ค์ ๋ํ ๋จ์ ํ
์คํธ ์์ฑ์ ์ง์คํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
๋ํ 2์ฃผ์ฐจ ๋ชฉํ ์ค ํ๋์๋ ํ
์คํธ ๋๊ตฌ ์ฌ์ฉ๋ฒ์ ๋ฐฐ์ฐ๋ ๋ถ๋ถ์ด ์์ง ์ฝ์ง ์์๋ค. ํ
์คํธ ์ฝ๋๋ฅผ ์ ์ง๋ ๊ฒ๊ณผ ๋๋ฒ๊น
์ ํตํ ์ค๋ฅ ์์ ์ ์ต์ํ์ง ์๋ค ๋ณด๋, ์ ํ๋ธ์์ ๊ฐ์๋ฅผ ์ฐพ์ ๊ธํ๊ฒ ๋ฐฐ์ฐ๋ ค๊ณ ํ๋๋ฐ ์๊ฐ๋ณด๋ค ๊ฐ์๊ฐ ๋ง์ง ์์๋ค. ์๋ง ์ธํ๋ฐ์์ ๊ด๋ จ ๊ฐ์๋ฅผ ์ฐพ์ ์ฒ์ฒํ ๋ฐฐ์์ผ ํ ๊ฒ ๊ฐ๋ค.
1์ฃผ์ฐจ์ ํจ์ ์์ฑ๋ง์ผ๋ก๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ๋ ๋์๋๋ฐ, ์ด์ ๋ ํจ์์ ๋ฉ์๋๋ฅผ ์์ ์ญํ ๋ก ๋ถ๋ฆฌํ๊ณ , ์ด๋ฅผ ํด๋์ค๋ก ๊ตฌ์ฑํ์ฌ ํ๋์ ํฐ ๊ธฐ๋ฅ์ ์ํํ๋๋ก ์ฌ๊ณ ํ๋ ๊ณผ์ ๊น์ง ๋ฐ์ ํ๋ค๋ ์ ์ด ๋ฟ๋ฏํ๋ค. ๋ฐฉํฅ์ฑ์ ์ ์ํด์ฃผ๋ ํ
์คํธ๊ฐ ์๊ณ ์ด๋ฅผ ํต๊ณผํ๋ฉด์ ๋๊ปด์ง๋ ์ฑ์ทจ๊ฐ ๋๋ถ์ ์ฑ์ฅํ๋ ๊ธฐ๋ถ์ด ๋ ๋ค.
๊ณตํต ํผ๋๋ฐฑ ํ์ธ
[README.md๋ฅผ ์์ธํ ์์ฑํ๋ค]
๋ ์์ ์์ธ README.md ์ ์ญํ ์ ๋ช ํํ๊ฒ ์์๋ณด๊ณ ์์ฑ์ ์์ํ๋ ์ง ๋ฌผ์ด๋ณธ๋ค๋ฉด ์๋ง ์๋๋ผ๊ณ ๋๋ตํ ๊ฒ์ด๋ค.. ๋ฌด์์ด๋ ๊ถ๊ธ์ฆ์ ๊ฐ์ง๊ณ "์?"๋ผ๋ ์ง๋ฌธ์ ๋์ก์ด์ผ ํ๋๋ฐ ๋ฆฌ๋๋ฏธ ํ์ผ์ ๋ํ ๋ช ํํ ์ญํ ์ ์๊ฐํ์ง ๋ชปํ๋๋ณด๋ค. ์ด์ฉ๋ฉด ๋ชจ๋๊ฐ ์๊ตฌ์ฌํญ์ ์์ฑํ๋ ํ์ผ์ด๊ณ ์ฝ๋์ ๋ํ ์ค๋ช ์ด ๋๋ ๋ฌธ์์ด๋๊น ์ฌ๊ธฐ์ ์์ฑํด์ผ ํ๋ ๊ฒ ์๋๊ฐ? ๋ผ๋ ์๊ฐ์ ํ๋ค.
๊ทผ๋ฐ ๊ณตํต ํผ๋๋ฐฑ์ ๋ณด๋ "์์ค ์ฝ๋ ์ด์ ์ ํ๋ก์ ํธ์ ๊ฐ์๋ฅผ ์๊ฐํ๋ ๋ฌธ์" ๋ผ๊ณ ์ ์ด์ฃผ์ จ๋ค. ์๊ตฌ์ฌํญ์ ๋ํ ์ฒดํฌ๋ฆฌ์คํธ๋ง ๋ด์์ ๊ด๋ฆฌํ๋ ํ์ผ์ธ๊ฐ? ํ๋ ๋ง์ฐํ ๊ฒฐ๋ก ์ ๋ด๋ ธ๋๋ฐ "ํ๋ก์ ํธ์ ๊ฐ์"๋ฅผ ๋ด์ ๋ฌธ์๊ฐ ๋์ด์ผ ํ๋ค๋ ๊ฒ์ ๋ชฐ๋๋ ๊ฒ ๊ฐ๋ค.
ํด๋น ํ๋ก์ ํธ๊ฐ ์ด๋ค ํ๋ก์ ํธ์ธ์ง, ์ฃผ์ ๊ธฐ๋ฅ์ด ๋ฌด์์ธ์ง ์๊ฐํ ์ ์๋ค๊ณ ๋ง์ํด์ฃผ์ จ๋ค. ๋งํฌ๋ค์ด ๋ฌธ๋ฒ์ ํ์ฉํ์ฌ 3์ฃผ์ฐจ์ ๋ฆฌ๋๋ฏธ์๋ ์ด๋ค ์ฝ๋ ๊ตฌํ์ธ์ง ๊ฐ๋ตํ ์ค๋ช ์ ์ถ๊ฐํ ๋ฆฌ๋๋ฏธ ํ์ผ์ ์์ฑํด์ผ๊ฒ ๋ค.
[๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ฌ๊ฒํ ํ๋ค]
๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ ๋ ํด๋์ค ์ค๊ณ์ ๊ตฌํ, ๋ฉ์๋ ์ค๊ณ์ ๊ตฌํ ๊ฐ์ ์์ธํ ๋ด์ฉ์ ํฌํจํ์ง ์๋๋ค.
๋๋๊ฒ๋ ํผ๋๋ฐฑ์ ๋ ๊ฐ์ง ์ค ํ ๊ฐ์ง๋ง ๋์ผํ๊ฒ ์์ฑํ์๋ค.
์์ธ ์ํฉ์ ํจ๊ป ์ ๋ฆฌํ ๊ฒ์ ์ํ์ง๋ง ํด๋์ค ์ด๋ฆ, ๋ฐํ๊ฐ ๋ฑ์ ์ธ์ ๋ ์ง ๋ณ๊ฒฝ๋ ์ ์์ด์ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ ๋ ํฌํจํ์ง ์๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋ค.
๋ฐํ๊ฐ์ ์ ๋ ฅํ๊ณ ์์ธ์ฌํญ์ ์ถ๊ฐํด๋ 2์ฃผ์ฐจ์ด๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ๊ตฌํ ๊ฐ์ ์์ธํ ๋ด์ฉ์ ํฌํจํ์ง ์๋ ๊ฒ์ด ์ข์ผ๋ ์ต๋ํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ค์ฌ์ผ๋ก ์์ฑํด์ผ๊ฒ ๋ค.
// ์์ (๋ฆฌ๋๋ฏธ ์์ฑํ๋ฉด์ ๋ณ๋ ๊ฐ๋ฅ)
ํ๋ก์ ํธ ์ฃผ์ : ๋์ ๊ด๋ฆฌ ์์คํ
๊ตฌ์ถ
- ๋์ ๋ฑ๋ก ๊ธฐ๋ฅ
- [ ] ์ ๋์๋ฅผ ์์คํ
์ ๋ฑ๋กํ๋ค.
- ์์ธ์ํฉ
- [ ] ์
๋ ฅ๋ ๋์ ์ ๋ณด๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ
[๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ ๋ฐ์ดํธํ๋ค]
๋ฆฌ๋๋ฏธ ํ์ผ์ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ๊ตฌํ ๊ณผ์ ์์ ๋ณ๊ฒฝ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ฒ์์ ์์ฑํ ๋ ๋ถ๋ด์ ๊ฐ๋ ๊ฒ๋ณด๋ค ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ ํ๋ ๊ฒ์ด ๋ซ๋ค๊ณ ํ๋ค.
1์ฃผ์ฐจ์๋ ์ฒ์ ์์ฑํ๋ ๋ฆฌ๋๋ฏธ ํ์ผ์ธ ๋งํผ ์์ฑ์ ๋ง์ ์๊ฐ์ ๋ค์๋๋ฐ 2์ฃผ์ฐจ์๋ ๊ธฐ๋ฅ ๊ตฌํ์ด ์ด๋ ค์ธ ๊ฒ ๊ฐ์์ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ๋น ๋ฅด๊ฒ ์ ๋ฆฌํ๊ณ ๊ฐ๋ฐ์ ๋ค์ด๊ฐ๋ ๊ฒ ๋ชฉํ์๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ์์ธ ์ฌํญ ์ฒ๋ฆฌ๋ฅผ ๋ง์ด ๋ชปํด์ ์์ฝ๊ฒ ๋๋ฌ๋ค.
์ด๋ฒ์๋ ํผ๋๋ฐฑ์ ๋ฐ์ํ์ฌ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์์ฑํ๊ณ ๊ธฐ๋ฅ ๋ชฉ๋ก๋๋ก ๊ตฌํํ๋ฉด์ ์์ธ ์ฌํญ์ ๋ฐ๋ก๋ฐ๋ก ์ถ๊ฐํ์ฌ ์ด์์๋ ๋ฌธ์๋ก ์ ์ง๋ ์ ์๋๋ก ๋ ธ๋ ฅํด๋ณด์์ผ๊ฒ ๋ค.
[๊ฐ์ ํ๋ ์ฝ๋ฉํ์ง ์๋๋ค]
์ฝ๋ ๋ด์์ ๋ฌธ์์ด์ด๋ ์ซ์ ๊ฐ์ ํ๋ ์ฝ๋ฉํ์ง ์๋๋ค. ๋์ ์์(const)๋ฅผ ์ ์ํ๊ณ ์๋ฏธ ์๋ ์ด๋ฆ์ ๋ถ์ฌํ์ฌ ํด๋น ๊ฐ์ด ์ด๋ค ์ญํ ์ ํ๋์ง ๋ช ํํ ๋๋ฌ๋ธ๋ค.
// ํ๋์ฝ๋ฉ ๋ ์
function calculateTotal(price) {
return price * 0.1; // ์ฌ๊ธฐ์ 0.1์ ์ธ์จ๋ก ๊ฐ์
}
// ์์๋ฅผ ์ฌ์ฉํ ์ฝ๋
const TAX_RATE = 0.1;
function calculateTotal(price) {
return price * TAX_RATE;
}
[๊ตฌํ ์์๋ ์ฝ๋ฉ ์ปจ๋ฒค์ ์ด๋ค]
ํด๋์ค๋ ํ๋, ์์ฑ์, ๋ฉ์๋ ์์ผ๋ก ์์ฑํ๋ค.
gpt์๊ฒ ์์ ์์์ ๋ง๋ ์์ ํด๋์ค๋ฅผ ํ๋ ์์ฑํด๋ฌ๋ผ๊ณ ๋ถํํด๋ณด์๋ค.
class Person {
// ํ๋ ์ ์
constructor(name, age) {
// ์์ฑ์ ์ ์ ๋ฐ ํ๋ ์ด๊ธฐํ
this.name = name;
this.age = age;
}
// ๋ฉ์๋ ์ ์
displayInfo() {
console.log(`์ด๋ฆ: ${this.name}, ๋์ด: ${this.age}`);
}
}
// ๊ฐ์ฒด ์์ฑ ๋ฐ ์ฌ์ฉ ์์
const person1 = new Person("ํ๊ธธ๋", 30);
person1.displayInfo(); // ์ถ๋ ฅ: ์ด๋ฆ: ํ๊ธธ๋, ๋์ด: 30
ํ๋๋ ํด๋์ค๊ฐ ๊ฐ์ง๋ ๊ณ ์ ์ ์์ฑ์ ์๋ฏธํ๋ค. ์์ ์ฝ๋์์๋ name๊ณผ age๊ฐ Person ํด๋์ค์ ํ๋๊ฐ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ฑ์๋ constructor๋ฅผ ์๋ฏธํ๋ค. ํด๋์ค๊ฐ ์ธ์คํด์คํ ๋ ๋ (= ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋) ์๋์ผ๋ก ํธ์ถ๋๋ ํน๋ณํ ํจ์๋ฅผ ์๋ฏธํ๋ค. this ํค์๋๋ฅผ ํตํด ํ๋๋ฅผ ์ด๊ธฐํํ๋ค.
๋ง์ง๋ง์ผ๋ก displayInfo()๊ฐ ๋ฉ์๋๊ฐ ๋๋ค. ์ด๋ ๊ฒ ํ๋, ์์ฑ์, ๋ฉ์๋ ์์ผ๋ก ํด๋์ค๋ฅผ ์์ฑํด๋๊ฐ๋ ์ฐ์ต์ ํด์ผ๊ฒ ๋ค.
[ํ ๋ฉ์๋๊ฐ ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ๋ด๋นํ๊ฒ ํ๋ค]
2์ฃผ์ฐจ์ ๊ณผ์ ์์๋ ํ๋์ ํจ์๊ฐ ํ ๊ฐ์ง ๋์๋ง ํ๋๋ก ๋ง๋ค์ด์ผ ํ๋ค๋ ํ์ต ๋ชฉํ๋ฅผ ๋ฐ๊ณ , ํด๋์ค ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฒ์ ์ฐ์ตํ๋ค๊ฐ ํด๋์ค์ ๋ฉ์๋๋ ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ๋ด๋นํ๋๋ก ๋ถ๋ฆฌํ๋ ๋ฆฌํฉํ ๋ง์ ์งํํ์๋ค.
์ด๋ฒ 3์ฃผ์ฐจ์๋ ๋์๋ค์ ์ต๋ํ ๋ถ๋ฆฌํด์ ๋ฉ์๋๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ๊ฒ ๋ค.
์๋์ ๊ฐ์ด ์๋ด ๋ฌธ๊ตฌ ์ถ๋ ฅ, ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ, ์ ํจ๊ฐ ๊ฒ์ฆ ๋ฑ์ ์์ ์ด ํ ํจ์์ ํฌํจ๋์ด์์ ๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ํจ์๋ก ๋ถ๋ฆฌํด๋ณด๋ ์ฐ์ต์ด ํ์ํ๋ค.
const userInput = () => {
MissionUtils.Console.readLine("๊ฒฝ์ฃผํ ์๋์ฐจ ์ด๋ฆ์ ์
๋ ฅํ์ธ์(์ด๋ฆ์ ์ผํ(,)๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถ): ", (input) => {
const carNames = input.split(",");
for (int index = 0; index < carNames.length; index++) {
if (carNames[index].length < 1 || carNames[index].length > 5) {
throw new Error("[ERROR] ์๋์ฐจ ์ด๋ฆ์ 1์ ์ด์ 5์ ์ดํ๋ง ๊ฐ๋ฅํฉ๋๋ค.");
}
}
return carNames;
});
};
โผ ๋ถ๋ฆฌ ์์
// ์ฌ์ฉ์๊ฐ ์๋์ฐจ ์ด๋ฆ์ ์
๋ ฅํ๋๋ก ์์ฒญํ๋ ํจ์
const getUserInput = () => {
return MissionUtils.Console.readLine(
'๊ฒฝ์ฃผํ ์๋์ฐจ ์ด๋ฆ์ ์
๋ ฅํ์ธ์(์ด๋ฆ์ ์ผํ(,)๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถ): '
);
};
// ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์๋์ฐจ ํจ์ ๋ฐฐ์ด๋ก ์ถ์ถ
const carName = (userInput) => {
return userInput.split(',');
};
// ์๋์ฐจ ์ด๋ฆ๊ฐ์ด ์ ํจํ์ง ํ์ธ
const validateCarName = (carName) => {
if (carName.length < 1 || carName.length > 5) {
throw new Error('[ERROR] ์๋์ฐจ ์ด๋ฆ์ 1์ ์ด์ 5์ ์ดํ๋ง ๊ฐ๋ฅํฉ๋๋ค.');
}
};
// ์คํ ํจ์
const getCarNames = (userInput) => {
const carNamesArray = carName(userInput);
carNamesArray.forEach(validateCarName);
return carNamesArray;
};
์์ ๊ฐ์ด ๊ธฐ๋ฅ๋ณ๋ก ํจ์๋ฅผ ๋๋ ์ ์๋ค. ํจ์๋ฅผ ์ฌ์ฉํ๋ ์์๋ ๋ฐ๋ก ์์ฑํ์ง ์์๊ณ , ์ด๋ป๊ฒ ๋๋๋์ง์ ๋ํด์๋ง ๊ฐ์ ์ก์๋ณด์๋ค.
[๋ฉ์๋๊ฐ ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ํ๋์ง ํ์ธํ๋ ๊ธฐ์ค์ ์ธ์ด๋ค]
์ฌ๋ฌ ๋ฉ์๋์์ ์ค๋ณต๋๋ ์ฝ๋๊ฐ ์๋ค๋ฉด ์ด๋ฅผ ๋ณ๋ ๋ฉ์๋๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ ๊ณ ๋ คํ๋ค.๋ฉ์๋์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง๋ค๋ ๊ฒ์ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ํฌํํ๊ณ ์์ ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๋ฏ๋ก 15๋ผ์ธ์ด ๋์ง ์๋๋ก ๊ตฌํํ๋ ์ฐ์ต์ ํ๋ฉด ์์์ ์ผ๋ก ๋ถ๋ฆฌํ๋ ์ฐ์ต์ ํ ์ ์๋ค.
"15๋ผ์ธ์ด ๋์ง ์๊ฒ ์ฝ๋๋ฅผ ์์ฑํ์" ์ ๊ฐ์ ๊ธฐ์ค์ ์ธ์ฐ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
[ํ ์คํธ๋ฅผ ์์ฑํ๋ ์ด์ ์ ๋ํด ๋ณธ์ธ์ ๊ฒฝํ์ ํ ๋๋ก ์ ๋ฆฌํด๋ณธ๋ค]
ํ ์คํธ๋ฅผ ์์ฑํ๋ฉด ๊ธฐ๋ฅ์ ์ ํ์ฑ์ ์ ๊ฒํจ์ ๋์ด ์ฝ๋์ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์๋ค. ํ ์คํธ ์์ฑ ๊ณผ์ ์ ํตํด ๊ตฌํํ ๊ธฐ๋ฅ์ ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ฒ ๋ฐ๊ฒฌํ ์ ์์ ๋ฟ๋ ์๋๋ผ, ์ฝ๋์ ๊ตฌ์กฐ์ ์๋๋ฅผ ๋ช ํํ ์ดํดํ๋๋ฐ๋ ๋์์ ๋ฐ์ ์ ์๋ค๊ณ ํ๋ค.
๊ทธ๋ฌํ ํ ์คํธ ์ฝ๋์ ์ฅ์ ์ ๋ด ๊ฒฝํ์ ํ ๋๋ก ๊ฐ์ฅ ๊ณต๊ฐํ๋ ์ด์ ๋ฅผ ์์ฑํด๋ณด๋ ๊ฒ์ด๋ค.
[์ฒ์๋ถํฐ ํฐ ๋จ์์ ํ ์คํธ๋ฅผ ๋ง๋ค์ง ์๋๋ค]
ํ ์คํธ์ ํต์ฌ ๋ชฉ์ ์ค ํ๋๋ ์ฝ๋์ ๋ํด ๋น ๋ฅด๊ณ ์์ฃผ ํผ๋๋ฐฑ์ ๋ฐ๋ ๊ฒ์ด๋ค. ์ฒ์๋ถํฐ ํฐ ๋จ์์ ํ ์คํธ๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด, ์์ฑํ ์ฝ๋์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ๊น์ง ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๊ณ ํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ต๋ํ ์์ ๋จ์๋ก ๋๋ ์ ํ ์คํธ๋ฅผ ๋ง๋ค์ด๊ฐ๋ ๊ฒ์ด ํจ๊ณผ์ ์ด๋ผ๊ณ ํ๋ค.
์์
ํฐ ๋จ์ ํ ์คํธ
- ์๋์ฐจ ๊ฒฝ์ฃผ ๊ฒ์์ ์์ํ์ฌ, ์ฌ์ฉ์๊ฐ ์ด๋ฆ๊ณผ ์งํ ํ์๋ฅผ ์ ๋ ฅํ๊ณ , ๊ฒ์์ ์งํํ ํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ค.
์์ ๋จ์ ํ ์คํธ
- ๋ฌด์์ ๊ฐ์ด 4 ์ด์์ด๋ฉด ์๋์ฐจ๊ฐ ์ ์งํ๋ค.
- ๋ฌด์์ ๊ฐ์ด 3 ์ดํ์ด๋ฉด ์๋์ฐจ๊ฐ ์ ์งํ์ง ์๋๋ค.
[JavaScript์์ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ดํดํ๊ณ ์ฌ์ฉํ๋ค]
JavaScript์์๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ด์ธ์๋ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
๋ค์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์์ ์ตํ๋ฉด ์ ์ฐํ๊ฒ ์ฝ๋๋ฅผ ์ค๊ณํ ์ ์๋ค.
๋์๊ฒ ๊ฐ์ฅ ํ์ํ ํผ๋๋ฐฑ์ด์์์ง๋ ๋ชจ๋ฅธ๋ค. ์ญ์ ์ ์ฐํ๊ฒ ์ฝ๋๋ฅผ ์ค๊ณํ๊ธฐ ์ํด์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๊ณต๋ถํด๋๊ฐ๋ ๊ฒ์ด ํ์์ ์ธ ๊ฒ ๊ฐ๋ค.
๋ ๊ฐ์ง ์ฐธ๊ณ ๊ธ์ ํ์ธํ๊ณ ์ฝ๋๋ฅผ ์ค๊ณํด๋๊ฐ์ผ๊ฒ ๋ค. ํ์ฌ์ ๊ณํ์ ๋ฆฌ๋๋ฏธ ํ์ผ ์์ฑ -> ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ ๊ณต๋ถ -> ๊ธฐ๋ฅ ๊ตฌํ ์์์ด๋ค!
โผ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ๋ง๋๋ ๋ค์ํ ๋ฐฉ๋ฒ
์ค๊ฐ KPT ํ๊ณ
2์ฃผ์ฐจ์๋ ํ์ต ๋ชฉํ์ ๋ง์ถฐ ๊ณผ์ ๋ฅผ ์์ฑํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค. ์ฒ์ ๊ธฐ๋ฅ์ ๋ดค์ ๋ 1์ฃผ์ฐจ๋ณด๋ค ๋ ์ด๋ ค์ ๋ณด์๊ณ , ์ํ ๊ธฐ๊ฐ๊ณผ ๊ฒน์ณ ์๊ฐ์ ์ฌ์ ๋ ๋ถ์กฑํ๋ค. ๊ทธ๋์ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ ๊ฒ์ ๊ฐ์ฅ ํฐ ๋ชฉํ๋ก ์ผ์๊ณ , ์์ธ ์ฌํญ๊น์ง ๊น์ด ์๊ฐํ์ง ๋ชปํ ์ฑ ๊ธฐ๋ฅ ๊ตฌํ์๋ง ์ง์คํ๋ ๊ฒ ๊ฐ๋ค.
๋ ๋ฒ์งธ ํ์ต ๋ชฉํ๋ ํ ์คํธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ณ , ํ๋ก๊ทธ๋จ์ด ์ ๋๋ก ์๋ํ๋์ง ํ ์คํธํด๋ณด๋ ๊ฒ์ด์๋ค. ํ์ง๋ง ๋ง์ง๋ง ๋ ๊น์ง ํจ์ ๋ถ๋ฆฌ์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ง์คํ๋ค ๋ณด๋ ํ ์คํธ ๋๊ตฌ ์ฌ์ฉ์ด ์ต์ํ์ง ์์์, ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ์ผ๋ก ๊ฐ๋จํ ๋ถ๋ถ์ ๋ํด์๋ง ๋น ๋ฅด๊ฒ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด๋ณผ ์ ์์๋ค.
๋ํ 1์ฃผ์ฐจ์ ๋ฌ๋ผ์ง ์ ์ด๋ผ๋ฉด, ์ด๋ฒ์๋ 6๊ธฐ ๋ถ๋ค์ด ๋ง๋ ์น ์๋น์ค CoReA: https://code-review-area.com/intro ์ฌ์ฉํด ๋ง๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ ์ฌ๋์ ๋งค์นญ๋ฐ์ ๊ฒ์ด๋ค ใ
ใ
. ๋ฆฌ๋ทฐํด์ฃผ์ ๋ถ๋ค๊ป ์ ๋ง ๊ฐ์ฌํ๊ณ , ๋๋ ๋งค์นญ๋ ๋ถ๋ค๊ป ๋ฆฌ๋ทฐ๋ฅผ ํด๋๋ฆฌ๊ณ ์ถ์์ง๋ง… ๋์๊ฒ ๋งค์นญ๋ ๋ถ๋ค์ ์ ๋ง ๋๋จํ ๋ถ๋ค์ด์๋ค. ์ธ ๋ถ ๋ชจ๋ ๋ฆฌ๋ทฐํด์ฃผ์ ๋ถ์ด 5๋ถ์ด ๋์๊ณ , ์ฝ๋๋ ๊น๋ํ๋ค. ๋ด ์ฝ๋์๋ ๋ถ์กฑํ ์ ์ด ๋ง๋ค๊ณ ๋๋ผ๋ ๋๋ ๋ค๋ฅธ ๋ถ์ ์ฝ๋๋ฅผ ์ฝ๊ณ ๋ฆฌ๋ทฐํ ์ญ๋์ด ๋ถ์กฑํ๋ค๊ณ ๋๊ผ๋ค. ๊ทธ๋์ ๋ฆฌ๋ทฐ๋ฅผ ๋ฌ์๋๋ฆฌ์ง ๋ชปํด ์ฃ์กํ์ง๋ง, ๊ทธ ๋๋ถ์ ์ข์ ์ฝ๋๋ฅผ ์ฝ์ด๋ณผ ์ ์์๋ค.
๋ํ 6๊ธฐ ์ ๋ฐฐ๋ค์ ์๋น์ค๊ฐ ๋๋ฌด ์ ๋ง๋ค์ด์ ธ์ ์ฌ์ฉํ๋ ๋ฐ ์ด๋ ค์์ด ์์๊ณ , ๋๋ถ์ 2์ฃผ์ฐจ์์ ๋์ ๋ถ์กฑํ ์ ์ ๋ฆฌ๋ทฐ์ด ๋ถ๋ค์ ํตํด ์๊ฒ ๋์ด ํฐ ๋์์ด ๋์๋ค. ๋์ฒ๋ผ ์ปค๋ฎค๋ํฐ ์ฌ์ฉ์ ์ต์ํ์ง ์๊ณ ๋ฆฌ๋ทฐ๋ ๋ฐ์๋ณด๊ณ ์ถ์ ์ด๋ณด์๋ค์ ํ๋ฒ ์ฐธ๊ฐํด๋ด๋ ๊ด์ฐฎ์ ์๋น์ค์ธ ๊ฒ ๊ฐ๋ค ใ
ใ
Keep (์ ์งํ๋ฉด ์ข์ ์ )
์ฐ์ ํจ์์ ๋ฉ์๋ ๋ถ๋ฆฌ๋ ์ต๋ํ ์๊ฒ ๋ง๋ ๊ฒ ๊ฐ์์ 3์ฃผ์ฐจ์๋ ์ ์ ์ฉํ์ฌ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค. ๋ฆฌ๋ทฐ์ด๋ถ๋ค๋ ํจ์๋ฅผ ์ต๋ํ ๋ถ๋ฆฌํ ๋ถ๋ถ์ ๋ํด์ ์นญ์ฐฌํด์ฃผ์ ์ ๊ธฐ๋ถ์ด ์ข์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ๋ชฉํ์๋ ์์ ํจ์๋ก ์ ๋ถ๋ฆฌํ๊ณ ์ ํ ์๋๊ฐ ๋๋ฌ๋ ๊ฒ ๊ฐ์ ๋ฟ๋ฏํ๋ค.
๋ฐ๋ปํ ๋ฆฌ๋ทฐ์ด๋ถ๋ค.. ๊ทธ๋ฆฌ๊ณ ์ด ๋ถ๋ค์ ๋ฆฌ๋ทฐ๋ ๋ฌ์๋๋ฆฌ๊ณ ์ถ์ด์ ๋ค์ด๊ฐ๋ณด๋ ๋งค์ฐ ๊ณ ์์ จ๋ ..
๋จธ์ฑํดํ๋ฉฐ ์ฝ๋๋ง ์ฝ๊ณ ๋ฐ์ ๋บ๋..
๊ทธ๋ฆฌ๊ณ ์ปค๋ฐํ ๋ ์์ ๋ ํ์ผ๋ช ์ <scope> ๋ถ๋ถ์ ํจ๊ป ์ ๋ ฅํ๋ ์์๋ณด๊ธฐ ํธํ ์ปค๋ฐ์ ๋ง๋ค ์ ์์๋ ๊ฒ ๊ฐ๋ค.
์ด๋ ๊ฒ ๊ธฐ๋ฅ ์ถ๊ฐ ์ปค๋ฐ์ feat์ ์ฐ๊ณ ๊ดํธ ์์ ํ์ผ ๋ช ์ ์ ๋ ฅํ๋ ํจ์ฌ ์์๋ณด๊ธฐ ์ฌ์์ง ๊ฒ ๊ฐ๋ค. ์ด ๋๊ฐ์ง๋ 3์ฃผ์ฐจ ์ฝ๋ ์์ฑ์์๋ ๊ฐ์ ธ๊ฐ์ผ ํ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ๋ค.
Problem (๊ณ ์ณ์ผํ ๋ฌธ์ ์ )
๋ ๋์ ํ๋์์ ๊ฐ์ฅ ์์ฌ์ด ์ ์ ๊ฒฐ๊ตญ ๊ผผ๊ผผํ์ง ๋ชปํ๋ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ๋ค. ๋จธ๋ฆฌ๋ฅผ ๋ง์ด ์ผ๊ฑฐ๋ ํ๋ค๋ค๊ณ ํ๋จ๋๋ฉด ๋น ๋ฅด๊ฒ ๋จธ๋ฆฌ๋ฅผ ์ํ์ฃผ๊ธฐ ์ํด ๊ผผ๊ผผํจ์ ๋ฅ๋ ฅ์ด ๊ธ๊ฒฉํ ๋ฎ์์ง๋ค. ์ฒ ์๋ฅผ ํ๋ฆฌ๊ณ , ์์๋ฅผ ๋ฃ๋ ํ์ผ์ ํจ์๋ฅผ ๋ง์ง๋ง์ ์ฎ๊ฒจ๋๋ ๋ฑ ์๊ฐ์ด ์งง์์ง๋ ์๊ฐ์ ์ต๋ํ ์ค์ฌ์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ์ง์ ์ด ์ฝ๋๋ ๋๋ฒ, ์ธ๋ฒ ์ ์ถํ๊ธฐ ์ ์ ํ์ธํ๋ ์ต๊ด์ด ํ์ํ ๊ฒ ๊ฐ๋ค.
์๋ง 2์ฃผ์ฐจ๋ ์๊ฐ์ด ์งง์ ๋งํผ ๋นจ๋ฆฌ ํด์ผ ํ๋ค๋ ์๊ฐ์ ์ค์ํ ๋ถ๋ถ์ด ๋ง์ ๊ฒ ๊ฐ๋ค. ํ์ง๋ง ์๊ฐ์ด ์ด๋ฐํ ์๊ฐ๋ค์ ์ด๋ฉด์ ๋ง์ด ์์ ๊ฒ์ด๊ณ ๊ทธ๋๋ง๋ค ์ค์ํ ์๋ ์๋ ๋ ธ๋ฆ์ด๋ ์์ฃผ ํ์ธํ๋ ์ต๊ด์ ๊ธฐ๋ฅด๋ ๊ฒ์ ๋งค์ฐ ์ค์ํ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒ ์๊ฐ ํ๋ฆฌ๋ ๊ฒ์ ๋ฆฌ๋ทฐ์ด ๋ถ์ด ์ถ์ฒํด์ฃผ์ 'Code Spell Checker'๋ผ๋ ํ์ฅ์๋ฅผ ์ฌ์ฉํด๋ณด๋ ์ฒ ์๋ ์ ์ก์ ์ ์์ ๊ฒ ๊ฐ์์ ๋๋ฌด ๊ฐ์ฌํ๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ผ๋ช ์ ์ญํ ์ ๋ง์ถฐ์ ํจ์๋ฅผ ์ ๋ ฅํ๊ณ , ์คํ์ผ ๊ฐ์ด๋์ ๋ง์ถฐ์ ์์ฑํ๋๋ก ๋ ธ๋ ฅํด์ผ ํ๋ ์ ์ด ํ์ํ๋ค.
Try (Problem์ ๊ธฐ๋ฐ์ผ๋ก ๋ณด์ํ์ฌ ์๋ก ์๋ํด๋ณผ ์ )
2์ฃผ์ฐจ์ ๋๋ฒ๊ฑฐ ๊ณผ์ ์ ์ ํ์ฉํ์ง ๋ชปํด์ ์์ฌ์์ด ๋จ์๋ค. 3์ฃผ์ฐจ์๋ 2์ฃผ์ฐจ์ Try์ธ ๋๋ฒ๊ฑฐ ๊ณผ์ ์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํด๋ณด๊ณ , ํ ์คํธ ์ฝ๋๋ฅผ ์ ์์ฑํ์ฌ ๋จ์๋ณ๋ก ํ ์คํธ๋ฅผ ์งํํ๋ฉด์ ์ฝ๋๋ฅผ ์์ฑํด๋ณผ ์๊ฐ์ด๋ค. ์ด๋ ๊ฒ ๋จ์๋ณ๋ก ํ ์คํธ๋ฅผ ์์ฑํ๊ณ ๊ธฐ๋ฅ๋ณ๋ก ํจ์๋ฅผ ์๊ฒ ๋ถ๋ฆฌํ๋ฉด ํ๋์ ํจ์์ ๋ํด ์ฌ๋ฌ ๋ฒ ํ์ธํ ์ ์์ด์, ์ด์ ์ ๋ถ์กฑํ๋ ๊ผผ๊ผผํจ์ ๋ณด์ํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐ๋๋ค.
๋ํ ๋ฆฌ๋ทฐ์ด๋ถ์ด ์ถ์ฒํด์ฃผ์ ์ฝ๋ ์์ ์ฑ ๋ฐฉ๋ฒ๋ค์ ์ ์ฉํด๋ณผ ๊ฒ์ด๋ค. private ๋ณ์๋ฅผ ํตํด์ ํด๋์ค ์ธ๋ถ์์ ์ง์ ์ ์ผ๋ก ์ ๊ทผํ์ง ๋ชปํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ๊ณผ ์คํ์ผ ๊ฐ์ด๋์ ๋ง์ถฐ for๋ฐ๋ณต๋ฌธ ๋์ forEach, map์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ํ์ธํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผํ ๊ฒ ๊ฐ๋ค.
์ ์ ์๊ฒ ์
๋ ฅ๋ฐ๋ ๊ฐ์ `Constants.js`์ ๊ฐ์ ํ์ผ์์ ๊ด๋ฆฌํ๋ฉด ์ ์ง๊ด๋ฆฌ์ฑ์ด ๋์์ง๋ค๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ , ์ ๊ทน์ ์ผ๋ก ์์ฉํ ์๊ฐ์ด๋ค! ์ ์ง๊ด๋ฆฌ์ฑ์ด ๋์์ง๋ ์ด์ ์ ๋ํด ์ฐพ์๋ณด๋, ์ฝ๋ ๊ฐ๋
์ฑ์ด ํฅ์๋๊ณ ์ค๋ณต ์ฝ๋ ๋ฐฉ์ง๊ฐ ๊ฐ๋ฅํด์ง๋ฉฐ, ์ ์ ์
๋ ฅ ๊ด๋ จ ๊ฐ์ด ํ ํ์ผ์ ๋ชจ์ฌ ์์ด ๋ณ๊ฒฝ์ด ํ์ํ ๋ ํ ๊ณณ๋ง ์์ ํ๋ฉด ๋๋ค๋ ์ฅ์ ์ด ์๋ค.
์๊ฐํด๋ณด๋, ํ๋์ ํ์ผ์ ๋ชจ๋ ๊ฐ๋ค์ด ๋ชจ์ฌ ์์ ๋, ํน์ ๊ฐ์ ์์ ํ๋ฉด์ ๋ค๋ฅธ ๊ฐ๋ค๋ ํ๋์ฉ ๋ชจ๋ ๋ณ๊ฒฝํด์ค์ผ ํ๋ ๊ฒฝํ์ด ์๋ค. (1์ฃผ์ฐจ) ์ด๋ฅผ ํตํด, ํ์ผ์ ๋๋ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ด ํ์คํ ์ฝ๋ ๊ด๋ฆฌ์ ์์ํ๋ค๋ ๊ฒ์ ๋๊ผ๋ค.
์ต์ข Todo ์ ๋ฆฌ
- [ ] ํ๋ ์ฝ๋ฉ ํ์ง ์๊ธฐ ์ํด ๊ตฌ๊ธ์ “javascript const” ๊ฒ์ํ์ฌ ์์ฑ๋ฒ ์์๋ณด๊ธฐ
- [ ] ๋ฉ์๋๊ฐ ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ํ๋์ง ํ์ธํ๋ ๊ธฐ์ค ์ธ์ฐ๊ธฐ
- [ ] ํ
์คํธ๋ฅผ ์์ฑํ๋ ์ด์ ์ ๋ํด ์ ๋ฆฌ
- [ ] ์๋ฐ์คํฌ๋ฆฝํธ ๋ค์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ ์ตํ๊ธฐ
'๐ Front-End > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS][์ฐํ ์ฝ] ํ๋ฆฌ์ฝ์ค 3์ฃผ์ฐจ ๊ณตํต ํผ๋๋ฐฑ์ ํตํ KPTํ๊ณ (2) | 2024.11.06 |
---|---|
[JS] ํด๋์ค์ ํ๋ผ์ด๋น ํ๋ ๊ตฌํ ์ด์ (4) | 2024.11.06 |
[JS][์ฐํ ์ฝ] ํ๋ฆฌ์ฝ์ค 1์ฃผ์ฐจ ๊ณตํต ํผ๋๋ฐฑ์ ํตํ KPTํ๊ณ (10) | 2024.10.24 |
[JS] Prettier๋ก ๋ฌธ์์ด single quotes ์ ๋ ฅ ์ค์ ํ๊ธฐ (2) | 2024.10.18 |