์ฒดํฌ์ธ
์ค๋ ์ปจ๋์
์ํ๋ฅผ ์๋ ํ
์ด๋ธ์ ์์ฑํด์ฃผ์ธ์
์ ์๋ 1~10์ ์ฌ์ด๋ก ์ค๋์ ์ปจ๋์
์ ์์ฑํด์ฃผ์๋ฉด ๋ฉ๋๋ค. 
ย
ย ์ค๋ ์คํฐ๋์ ๋ชฉํ
โข
์ฝ๋๋ฆฌ๋ทฐ์ โํด๋ฆฐ ์ฝ๋โ์ ๊ด์ ์ ๋ด์ ์ฌํ ํผ๋๋ฐฑ ์ฃผ๊ณ ๋ฐ๊ธฐ
โข
โํ์ด ํ๋ก๊ทธ๋๋ฐโ์ ํตํด ๋ณด๋ค ๋น๋ฒํ๊ฒ ํผ๋๋ฐฑ ์ฃผ๊ณ ๋ฐ๋ ์ฐ์ตํ๊ธฐ
ย
ย ๋ ๋์ ์ฝ๋๋ฅผ ์ํ ๊ณ ๋ฏผ๊ณผ ํผ๋๋ฐฑ
1. ๊ฐ๋ ์ฑ์ ์ํ ๋ค์ด๋ฐ ~20:40
1) ๋ด ํจ์๋ ์ ๋ง ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ํ๋๊ฐ? ๊ทธ๋ฆฌ๊ณ ํจ์์ ์ด๋ฆ์ ์ ์ ํ๊ฐ?
function showMenuItems() {
const menuItems = getMenuItems();
...
menuItems.forEach(item => {
console.log(item);
});
...
}
JavaScript
์ ์ฝ๋๋ ์๋์ ๊ฐ์ด ๋ถ๋ฆฌ๋ ์ ์์ต๋๋ค.
function logMenuItems(menuItems) {
menuItems.forEach(item => {
console.log(item);
});
}
function showMenuItems() {
const menuItems = getMenuItems();
...
logMenuItems(menuItems);
...
}
JavaScript
2) ์ค๊ฐ ๋ณ์ ๋์ : ์๋ฏธ๊ฐ ๋ช ํํด์ง๋ค๋ฉด ๋ณ์๋ช ์ ๊ธธ์ด๋ ๊ด์ฐฎ์ต๋๋ค.
const menuItems = getMenuItems();
menuItems.map(item => {
if (item.isSoldOut) {
...
}
})
JavaScript
const menuItems = getMenuItems();
const soldOutMenuItems = menuItems.filter(item => item.completed)
if (soldOutMenuItems) {
...
}
JavaScript
๋ณต์กํ ๊ณ์ฐ์ด ํ์ํ๋ค๋ฉด ํจ์๋ก ๋ถ๋ฆฌํ๋ฉด ์ข์ต๋๋ค.
2. return ๊ตฌ์กฐ ~21:10
1) ๋น ๋ฅธ ์คํจ: fast fail (early return)
๋น ๋ฅธ ์คํจ๋ฅผ ํ๊ฒ๋ ์ฝ๋๋ฅผ ๊ตฌํํ๋ฉด depth๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. depth๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ ์ฝ๋๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋๋ ์ต๊ด ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ ์์์ ์ผ๋ก depth๋ฅผ ์ค์ด๋ ๊ฒ์ด ์ข์ต๋๋ค.
if (์ฑ๊ณต๋ก์ง || isTrue) {
...
}
// ์๋์ ๊ฐ์ด ๋น ๋ฅธ ์คํจ๋ฅผ ํ๋ฉด ์ฝ๋์ ์๋์ ์์ธ ์กฐ๊ฑด์ด ๋ช
ํํด์ง๊ณ ๋์ค์ ๋ถ๋ฆฌํ๊ธฐ๋ ์ฝ์ต๋๋ค.
if (์คํจ๋ก์ง) {
return
}
... // ์ฑ๊ณต ๋ก์ง
JavaScript
2) boolean์ returnํ๋ค๋ฉด ๋ฐ๋ก returnํ๊ธฐ
// bad
if (isSoldOut || isCount) {
return true
}
return false
// good
return isSoldOut || !!isCount
JavaScript
3. ๊ฐ์ฒด
1) ๋ฐ๋ณต๋ฌธ ๋ณด๋ค๋ ํ์ดํ
โข
๋ฐ๋ณต๋ฌธ ๋ณด๋ค๋ ํ์ดํ๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ ๋ณด๋ค ์ฝ๊ธฐ ์ข์ ์ฝ๋๊ฐ ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
โข
๊ฐ๋ฅํ๋ฉด for๋ฌธ ๋์ ์ ๋ด์ฅ ๊ฐ์ฒด ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ฃผ์ธ์
find
some
every
includes
map
filter
reduce
JavaScript
// bad
const soldOutMenuItems = [];
for (const item of menuItems) {
if (item.isSoldOut) {
soldOutMenuItems.push(item);
}
}
// good
const soldOutMenuItems = menuItems.filter(item => item.isSoldOut);
JavaScript
// bad
for (let i = 0; i < todoList.length; i++) {
if (todoList.isCompleted) {
return todoList
}
}
// good
updatedTodoList = todoList.filter(todoItem => todoItem.isCompleted)
JavaScript
2) ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ forEach๋ณด๋ค๋ map์ ์ด์ฉํด ๋ถ๋ณ ๊ฐ์ฒด์ฒ๋ผ ๋ค๋ฃจ๊ธฐ
๋ถ๋ณ ๊ฐ์ฒด๋ก ๋ค๋ฃฌ๋ค๋ฉด ๋ฐ์ดํฐ์ ๋ณํ๋ฅผ ์ถ์ ํ๊ธฐ๋ ์ฝ๊ณ , ์์์น ๋ชปํ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ์๋ฐฉํ ์ ์์ต๋๋ค. forEach์ ๊ฒฝ์ฐ ๊ธฐ์กด ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ๋ณ๊ฒฝ์ ๊ฐํ๋ ๋ฉ์๋์ด๊ธฐ ๋๋ฌธ์, forEach๋ฅผ ๋ฐ๋์ ์จ์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ์๋ก์ด ๋ฐฐ์ด์ ๋ฆฌํดํ๋ map์ ํ์ฉํด์ฃผ์ธ์~!
// bad
const menus = ['์์คํ๋ ์', '์นดํ๋ผ๋ผ', 'ํ๋ผํธ์น๋
ธ', '๋ธ๋ํฐ'];
menus.forEach((value, index) => {
menus[index] += '๋์นดํ์ธ';
});
console.log(menus);
// good
const menus = ['์์คํ๋ ์', '์นดํ๋ผ๋ผ', 'ํ๋ผํธ์น๋
ธ', '๋ธ๋ํฐ'];
const decMenus = menus.map((value, index) => menus[index] += '๋์นดํ์ธ');
console.log(decMenus);
JavaScript
4. ๊ธฐํ
1) EOL (End of Line)
PR์์ ์ด๋ฐ ๋งํฌ๋ฅผ ๋ฐ๊ฒฌํ๋ค๋ฉด! ํ๊ฒฝ์ ๋ฐ๋ผ ์๋ํ ๋ฐ์ ๋ค๋ฅด๊ฒ ๊ฐํ ๋ฌธ์ ์ฒ๋ฆฌ๊ฐ ๋์ง ์๋๋ก EOL ์ค์ ์ ํ์ธํด์ฃผ์ธ์.
2) ์ฃผ์์ ๋ด์์ผํ๋ ๋์
์ฐ๋ฆฌ๊ฐ ์ฃผ์์ ์์ฑํ๋ค๋ฉด ์ด๋ค๊ฑธ ์์ฑํ๋ฉด ์ข์๊น์? ์ฃผ์์ ์ค์ ์ฝ๋๋ฅผ ํฌํจํ์ฌ ํด๋น ๋ถ๋ถ์ ์ดํดํ๋๋ฐ ๋ ๋ง์ ์๊ฐ์ ํ ์ ํด์ผํ๊ณ , ํ๋ฉด์ ์ผ์ ํ ๋ถ๋ถ์ ์ฐจ์งํฉ๋๋ค. ๊ทธ๋์ ์ฃผ์ ๋ํ ์ฝ๋์ ์ผ๋ถ์ด๋ฏ๋ก ์์ฑํ ๋๋ ๋ถ๋ช
ํ ์ด์ ๊ฐ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ผ ์์ฑํด๋ ๊ด์ฐฎ์ ์ฃผ์๊ณผ, ๊ทธ๋ ์ง ์์ ์ฃผ์ ์ฌ์ด์ ๊ฒฝ๊ณ๋ฅผ ์ด๋ป๊ฒ ์ ํ ์ ์์๊น์?
๊ฐ๋ ์ ์ค๋ช ์ ํฌํจํ๊ธฐ
์ํ์๋ ๊ฐ๋
์ด ์์ ์ ํต์ฐฐ์ ์ค๋ช
ํ๊ณ , ์ํ๊ฐ ๋ง๋ค์ด์ง ๊ณผ์ ์ ๊ด๋๊ฐ์ด ์ ์ดํดํ๊ฒ ๋์์ฃผ๋ '๊ฐ๋
์ ์ค๋ช
'์ ๋ด์ ๊ฐ๋
ํ ํธ๋์ด ์์ต๋๋ค๋ค. ์ด์ ๋น์ทํ ๋ฐฉ์์ผ๋ก ์ค์ํ ํต์ฐฐ์ ๊ธฐ๋กํ ์ฃผ์์ ์ฝ๋์ ํฌํจ์ํจ๋ค๋ฉด, ์ฝ๋ ์ฌ๋์ผ๋ก ํ์ฌ๊ธ ํด๋น ์ฝ๋์ ๋ํ ๋ ๋์ ์ดํด๋ฅผ ํ ์ ์๊ฒ ๋์์ค๋๋ค.
์๋ฅผ ๋ค๋ฉด
// ์ด ๋ฐ์ดํฐ์์ ์ด์งํธ๋ฆฌ๋ ํด์ํ
์ด๋ธ๋ณด๋ค 40%์ ๋ ๋น ๋ฅด๋ค.
// ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ๋ฉด, ๊ธฐ์กด์ 100line์ด ๋ ์ ์๋ ์ฝ๋๊ฐ ๋จ 20์ค๋ก ์ ๋ฆฌ๋๋ค. ๋ฐ๋ฉด ์ฑ๋ฅ์ ์ ์๋ฏธํ ์ฐจ์ด๊ฐ ์๋ค.
JavaScript
์ด๋ฌํ ์ฃผ์์ ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์๊ฒ ์ฝ๋๋ฅผ ์ต์ ํํ๋๋ผ ์๊ฐ์ ํ๋นํ์ง ์๊ฒ ๋์์ค๋๋ค.
์ฝ๋์ ์๋ ๊ฒฐํจ์ ์ค๋ช ํ๊ธฐ
์ฝ๋๋ ์ง์์ ์ผ๋ก ์งํํ๋ฉฐ, ๊ทธ๋ฌ๋ ๊ณผ์ ์ค์ ๋ฒ๊ทธ๋ฅผ ๊ฐ์ต๋๋ค. ์ด๋ฌํ ๊ฒฐํจ์ ์ค๋ช
ํ๋ ๊ฒ์ ๋ถ๋๋ฌ์ํ ํ์๋ ์์ต๋๋ค. ์จ๊ธฐ๋๊ฒ ๋ฌธ์ ์ด์ง, ๊ฒฐํจ์ ๊ณต๊ฐ์ ์ผ๋ก ๋๋ฌ๋ด๊ณ ์์ ํ ์ฌ์ง๋ฅผ ๋จ๊ฒจ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ์ ์ด ํ์ํ ๋ ์๋์ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
// TODO: JPEG์ธ ๋ค๋ฅธ ์ด๋ฏธ์ง ํฌ๋งท๋ ์ฒ๋ฆฌํ ์ ์์ด์ผ ํ๋ค
JavaScript
์๋๋ React ์ฝ๋์ ํฌํจ๋ ์ฃผ์์ด๋ค
// AsyncMode should be deprecated
export function isAsyncMode(object: any) {
if (__DEV__) {
if (!hasWarnedAboutDeprecatedIsAsyncMode) {
hasWarnedAboutDeprecatedIsAsyncMode = true;
// Using console['warn'] to evade Babel and ESLint
console['warn'](
'The ReactIs.isAsyncMode() alias has been deprecated, ' +
'and will be removed in React 18+.',
);
}
}
return false;
}
JavaScript
์ด๋ฌํ ๊ฒฐํจ ์ค๋ช
๊ณผ, ์ถ๊ฐ๋ก ํด์ผํ๋ ์ผ์ ๊ฒฝ์ฐ ํ๋ด์์ ์ปจ๋ฒค์
์ ๋ง์ถ๋ฉด ์ข์ต๋๋ค.
์์์ ๋ํ ์ค๋ช
์์๋ฅผ ์ ์ํ ๋๋ ์ข
์ข
๊ทธ ์์๊ฐ ๋ฌด์์ ํ๋์ง, ๊ทธ๊ฒ์ด ์ ํน์ ํ ๊ฐ์ ๊ฐ๊ฒ ๋๋์ง ์ฌ์ฐ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ์๋์ ๊ฐ์ด ์์ฑ๋ ๊ฒฝ์ฐ, ์ฃผ์์ ํตํด ํด๋น ์ฝ๋์ ๋ํ ์ดํด๋๋ฅผ ๋ ๋๊ฒ ๊ฐ์ ธ๊ฐ ์ ์์ต๋๋ค.
// ํฉ๋ฆฌ์ ์ธ ํ๊ณ - 1000๊ฐ ์ด์์ ๊ตฌ๋
ํ๋ ์ฌ๋์ ๊ธฐํ ๋
ผ์์ ์๋ค.
const MAX_SUBSCRIPTIONS = 1000
// ์ฌ์ฉ์๋ค์ 0.72๊ฐ ํฌ๊ธฐ/ํด๋น๋ ๋๋น ์ต์ ์ด๋ผ๊ณ ์๊ฐํ๋ค.
const IMAGE_QUALITY = 0.72
JavaScript
์ฌ๋๋ค์ด ์ฝ๊ฒ ๋น ์ง ๊ฒ ๊ฐ์ ํจ์ ์ ๋ฏธ๋ฆฌ ๊ฒฝ๊ณ ํ๊ธฐ
์๋ฅผ ๋ค์ด ์ฌ์ฉ์์๊ฒ ์ด๋ฉ์ผ์ ๋ณด๋ด๋ ์จ๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์๋ฅผ ์์ฑํ๋ค๊ณ ํด๋ด
์๋ค. ์ด ๋ ์๋์ ๊ฐ์ ์ด์๊ฐ ์๊ณ , ๊ทธ์ ๋ํด ์์ฑํด์ค๋ค๋ฉด, ํจ๊ป ๊ฐ๋ฐํ๋ ์ฌ๋์ 1๋ถ์ ๋ ์์๋๋ค๋๊ฑธ ์ฌ์ฉ์์๊ฒ ์ ๋๋ฉ์ด์
์ด๋, ๋ฉ์์ง๋ก ์๋ฆผ์ ์ค ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด, ์ ์๊ฐ์ด 1๋ถ์ด๋ ๊ฑธ๋ฆฌ๋์ง ๊ทธ๊ฒ์ด ์๋ฌ๊ฐ ์๋์ง ํ์ธํ๋ ์์
์ ํด์ผํ ์๋ ์์ต๋๋ค.
// ์ด ํจ์๋ ์ธ๋ถ ์๋น์ค๋ฅผ ํธ์ถํ์ฌ, ์ด๋ฉ์ผ์ ๋ฐ์กํ๋ค (1๋ถ์ ๋ ์์)
function sendEmail() {
...
}
JavaScript
์ค๊ฐํ๊ณ & ์ฌ๋์๊ฐ (~21:20)
ํ์ด ํ๋ก๊ทธ๋๋ฐ
๋ฌธ์ (~22:05)
ํผ๋ณด๋์น ์๋ F(0) = 0, F(1) = 1์ผ ๋, 2 ์ด์์ n์ ๋ํ์ฌ F(n) = F(n-1) + F(n-2) ๊ฐ ์ ์ฉ๋๋ ์ ํ์์
๋๋ค. 2 ์ด์์ n์ด ์
๋ ฅ๋์์ ๋, fibonacci ํจ์๋ฅผ ์ ์ํ์ฌ n๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ ๋ฐํํด ์ฃผ์ธ์. ์๋ฅผ ๋ค์ด n = 3์ด๋ผ๋ฉด 2๋ฅผ ๋ฐํํด์ฃผ๋ฉด ๋ฉ๋๋ค.
ex_ F(4)์ธ ๊ฒฝ์ฐ 0 1 1 2 '3' ์ด๋ฏ๋ก F(4) = 3 ์
๋๋ค.
Plain Text
function fibonacci(number) {
// ์ด ๋ถ๋ถ์ ๊ตฌํํด์ฃผ์ธ์.
}
JavaScript
Gallery view
Search
์งํ๋ก๊ทธ๋๋ฐํ ๋ ์ฃผ์์ฌํญ
โข
โข
๋ฌธ์ 2
waterMelonํจ์๋ ์ ์ n์ ๋งค๊ฐ๋ณ์๋ก ์
๋ ฅ๋ฐ์ต๋๋ค.
๊ธธ์ด๊ฐ n์ด๊ณ , ์๋ฐ์๋ฐ์โฆ์ ๊ฐ์ ํจํด์ ์ ์งํ๋ ๋ฌธ์์ด์ ๋ฆฌํดํ๋๋ก ํจ์๋ฅผ ์์ฑํ์ธ์.
ex_ waterMelon(4)์ด 4์ด๋ฉด โ์๋ฐ์๋ฐโ์ ๋ฆฌํดํ๊ณ waterMelon(3)์ด๋ผ๋ฉด โ์๋ฐ์โ๋ฅผ ๋ฆฌํดํ๋ฉด ๋ฉ๋๋ค.
Plain Text
function waterMelon(n){
}
JavaScript
2์ฃผ์ฐจ ๋ชฉํ
์ฒดํฌ ๋ฆฌ์คํธ
์คํ
2 ๋ฏธ์
์ ์งํํ๊ณ Pull Request๋ฅผ ๊ท์น์ ๋ง๊ฒ ๋ณด๋๋๊ฐ? (https://makerjun.notion.site/b83f1f42a51a431ebe95cba7a4498dd1 ์ฐธ์กฐ)
์คํ
2 ๋ฏธ์
์ค ์ผ๋ถ ๊ธฐ๋ฅ์ด๋ผ๋ ํ์ด ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์งํํด๋ณด๊ธฐ
ํด๋ฆฐ์ฝ๋๋ฅผ ์ํ ๊ด์ ์์ ํผ๋๋ฐฑ PR ์ฃผ๊ณ ๋ฐ๊ธฐ