1. OOP
1-1. ๊ฐ์ฒด์งํฅ์ 4๊ฐ์ง ํน์ฑ
a. ๋คํ์ฑ
ํ ๊ฐ์ง ์ญํ ์ด ์ํฉ์ ๋ฐ๋ผ ๊ฐ๊ธฐ ๋ค๋ฅธ ํ๋์ ํ๋ค.
- ์ ฐํ๊ฐ ํ๊ธฐ์นจ์_ํ๋ค()
- ๋ถ ์ฃผ๋ฐฉ์ฅ -> ๋์น๋ฅผ_๋ณธ๋ค()
- ์กฐ๋ฆฌ์ฅ -> ์๋ฆฌํ๋_์ฒ์_ํ๋ค()
b. ์ถ์ํ
- ๊ณตํต๋ ๊ธฐ๋ฅ์ ๋ฝ์๋ธ๋ค.
- ํ์ค ์ธ๊ณ์ ๋ณต์กํ ํ์์ ๊ฐ๋จํ ํํ๋ก ๋ชจ๋ธ๋งํ๋ค. (simplify)
์ต์ํ์ ์ ๋ณด๋ฅผ ์ถ์ถ
c. ์บก์ํ
- ๊ตฌํ ๋ด์ฉ์ ๋ด๋ถ์ ์จ๊ฒจ์ ์์ง๋๋ฅผ ๋์ด๋ ๊ฒ
- ์์ง๋ : ๊ฐ์ฒด๊ฐ ์์ ๊ณผ ๊ด๋ จ๋ ๊ฒ์ ์ค์ฌ์ ์ผ๋ก ํ๋ํ๋ค.
c-1. ๊ฒฐํฉ๋
- ๋ ๊ฐ์ฒด๊ฐ ์๋ก ๊ด๋ จ๋๊ฑฐ๋ ์์กดํ๋ ์ ๋
- ์ ์ข์๊ฑฐ (๊ฐ์ฒด๋ฅผ ๋ผ์ด๋ด๊ฑฐ๋ ๋ณ๊ฒฝํ๊ธฐ ํ๋ค๋ค)
c-2. ์บก์ํ๋ฅผ ์๋ฐํ ์ฌ๋ก
- ์ ๋ฌธ๋ฐฐ๋ฌ๋ถ๊ฐ ๊ณ ๊ฐ์ ์ง๊ฐ์ ๊ฐ์ ธ์์, ํ๊ธ์ ํ์ธํ๊ณ , ๋์ ๊ฐ์ ธ๊ฐ๋๊ฒ ์๋๋ผ
- ๊ณ ๊ฐ์ด ์์ ์ ์ง๊ฐ์ ํ๊ธ์ ํ์ธํ๊ณ , ๋์ ์ ๋ฌธ๋ฐฐ๋ฌ๋ถ์๊ฒ ๊ฑด๋ค์ฃผ๋ ๊ฒ
d. ์์
- ๋ถ๋ชจ์ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๋ฌผ๋ ค๋ฐ์ ์ ์๋ค.
1-2. SOLID
์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ๋ฅผ ์ํ 5๊ฐ์ง ์์น
a. Single-Responsibility Principle (๋จ์ผ ์ฑ ์ ์์น)
- ๊ฐ์ฒด๋ ์ค๋ก์ง ํ๋์ ์ฑ ์์ ๊ฐ๋๋ค
- ๊ณตํต๋ ์ผ์ ํ๋ ๊ฐ์ฒด๋ฅผ ํ๋ ๋ ์ผ๋ก์จ, ์ค๋ณต๋ ์ฝ๋๋ฅผ ์ต๋ํ ์ ๊ฑฐํ๋ค.
b. Open/Closed Principle (๊ฐ๋ฐฉ/ํ์ ์์น)
- ๋ณ๊ฒฝ์๋ ๋ซํ์๊ณ ํ์ฅ์๋ ์ด๋ ค์๋ค.
- ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ๋ฐ๋์ง ์๋๋ก ํ๋ค.
- ๋ถ๋ชจ class์์ ์์ class๋ฅผ ๋ง๋ค ๋, ์์ class์์ ๊ธฐ๋ฅ์ ์ถ๊ฐ/์์ ํ ์ ์์ง๋ง,
์์ class๋ฅผ ์ํด ๋ถ๋ชจ class๊ฐ ์์ ๋ ํ์๋ ์๋ค.
c. Liskovโs Substitution Principle (๋ฆฌ์ค์ฝํ ์นํ ์์น)
- ์์ ํ์ ์ ํ์ ํ์ ์ผ๋ก ๋ฐ๊พธ๋๋ผ๋ ์ ์ ์๋ํด์ผ ํ๋ค.
- Ex. ์ ์ฌ๊ฐํ์ ์ง์ฌ๊ฐํ์ ์์ฑ์ ์์์ ๋ฐ๋ ์๊ฐ ์ ์ฌ๊ฐํ์ ์ฑ์ง์ ์๋ฐฐ๋๋ค.
- ๋ถ๋ชจ class์ ์์น์ ์์ class๋ก ๋ฃ์ด๋ ์ด๋ ํ issue๋ ์์ด์ผ ํ๋ค๋ ์์น์ด๋ค.
d. Interface Segregation Principle (์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น)
- ํด๋ผ์ด์ธํธ ์ ์ฅ์์ ํ์ํ ๊ธฐ๋ฅ ์ค์ฌ์ผ๋ก ์ธํฐํ์ด์ค๋ฅผ ๋ถ๋ฆฌํ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์์ ๊ณผ ๊ด๋ จ์ด ์๋ ์ธํฐํ์ด์ค๋ ๊ตฌํํ์ง ์์์ผ ํ๋ค.

e. Dependency Inversion Principle (์์กด์ฑ ์ญ์ ๋ฒ์น)
- ์ ์์ค ๋ชจ๋์ด ๊ณ ์์ค ๋ชจ๋์์ ์ ์ํ ์ถ์ ํ์ ์ ์์กดํด์ผ ํ๋ค.
- -> ๋ถ๋ชจ class๋ ์์ class์ ์์กดํด์๋ ์๋๋ค.
- ํด๋ผ์ด์ธํธ ์ ์ฅ์์ ํ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ถ์ถํ๋ค.
- ๋ ๋ฆฝ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํด์ง ๋ค๋ ์ฅ์

2. FP
a. Pure Function (์์ํจ์)
- ๊ฐ์ ์ ๋ ฅ๊ฐ์๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ค.
- ๊ทธ๋ฌ๋ฉด์ side effect๊ฐ ์๋ ๊ฒ.
return 2*x
vsalpha = x; return 2*alpha
: ์ ์๊ฐ ์์ํจ์
b. Immutability (๋ถ๋ณ์ฑ)
- ์ด๋ฏธ ์ ์ฅ๋ ๊ฐ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- oop์์๋ Private, Public ๋ฑ์ ์ ๊ทผ ์ ์ด์๋ก ํต์ ๋ฅผ ํ ์ ์์ง๋ง, FP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฌด๋ฐ ๋ด๋ถ ์ํ๋ฅผ ๋ณํ์ํค์ง ์๋๋ค.
- ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ํ์ํ ๊ฒฝ์ฐ, ๊ทธ ๋ฐ์ดํฐ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด ๋ณ๊ฒฝํ๊ณ , ํด๋น ๋ณต์ฌ๋ณธ์ ์ฌ์ฉํด ์์ ํ๋ค.
c. Declerative Pattern (์ ์ธ์ ํจํด)
- How ๋ณด๋ค๋ What์ ์ง์คํ๋ค.
// ๋ช
๋ นํ ํ๋ก๊ทธ๋๋ฐ. ์ด๋ป๊ฒ ์ํํ ์ง
let numbers = [1, 2, 3];
function multiply(numbers, multiplier) {
for (let i = 0; i < numbers.length; i++) {
numbers[i] = numbes[i] * multiplier;
}
}
// ํจ์ํ ํ๋ก๊ทธ๋๋ฐ. ๋ฌด์์ ์ํํ ์ง
function multiply(number, multiplier) {
return number.map((num) => num * multiplier);
}
- Map, filter ๋ฑ๋ฑ์ด ํจ์ํ ์ฝ๋๋ผ๊ณ ํจ
d. First Class Function (1๊ธ ๊ฐ์ฒด)
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์ ํจ์๋ฅผ 1๊ธ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ค.
- ๋ณ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์ ๋ด์ ์ ์๊ณ , ํ๋ผ๋ฏธํฐ๋ ๋ฐํ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- ์์ง ์๋ฐ์์ ํจ์๋ฅผ 1๊ธ ๊ฐ์ฒด๋ก ์ทจ๊ธํ์ง ์์
// 1๊ธ ๊ฐ์ฒด
const addTwo = (num) => num + 2;
const multiplyTwo = (num) => num * 2;
const transform = (numbers) => numbers.map(addTwo).map(multiplyTwo);
console.log(transform([1, 2, 3, 4])); // [6, 8, 10, 12]
e. High Order Function (๊ณ ์ฐจํจ์)
- ํจ์๋ฅผ ํจ์์ ์ธ์๋ก ๋ฐ๋๋ค.
- ํจ์์ ๋ฐํ๊ฐ์ผ๋ก ๋ ๋ค๋ฅธ ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
const func1 = (func) => (word) => {
func();
console.log(`${word}`);
};
e.1 ์ปค๋ง(currying) ๊ธฐ๋ฒ
- ์ธ์๊ฐ ์ฌ๋ฌ๊ฐ์ธ ํจ์์ ์ผ๋ถ ์ธ์๋ฅผ ๊ณ ์ ์ํค๋ ์๋ก์ด ํจ์๋ฅผ ๋ง๋๋ ๊ธฐ๋ฒ
function helloFunc(word) {
return function (name) {
console.log(`${word}, ${name}`);
};
}
const printHello = helloFunc("hello");
printHello("Tibetan Fox"); // hello, Tibetan Fox
printHello("Tiger"); // hello, Tiger
- ์ปค๋ง ๊ธฐ๋ฒ์ ์ผ๋ถ ์ธ์์ ๊ฐ์ ๊ฐ์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ ๋ ๊ทธ ๋ฐ๋ณต๋๋ ์ธ์๋ฅผ ๊ณ ์ ํจ์ผ๋ก์จ ์ค๋ณต์ ์ต์ํ ํ๊ธฐ์ ์ ํฉํ ๊ธฐ๋ฒ
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ์ค ํ๋
- ์์ ํจ์๋ฅผ ํตํด์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ๊ฐ ํ๋ฅธ๋ค
- ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ฅ์ ์ ๊ฐ์ง๋ค (์์ํจ์->๋ถ์ํจ๊ณผ๊ฐ ์๋ค. ์ฆ, ์ค๋ ๋์ ์์ ์ฑ ๋ณด์ฅ)
- ๊ฐ๊ฒฐํ๊ณ ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค
1. OOP
1-1. ๊ฐ์ฒด์งํฅ์ 4๊ฐ์ง ํน์ฑ
a. ๋คํ์ฑ
ํ ๊ฐ์ง ์ญํ ์ด ์ํฉ์ ๋ฐ๋ผ ๊ฐ๊ธฐ ๋ค๋ฅธ ํ๋์ ํ๋ค.
- ์ ฐํ๊ฐ ํ๊ธฐ์นจ์_ํ๋ค()
- ๋ถ ์ฃผ๋ฐฉ์ฅ -> ๋์น๋ฅผ_๋ณธ๋ค()
- ์กฐ๋ฆฌ์ฅ -> ์๋ฆฌํ๋_์ฒ์_ํ๋ค()
b. ์ถ์ํ
- ๊ณตํต๋ ๊ธฐ๋ฅ์ ๋ฝ์๋ธ๋ค.
- ํ์ค ์ธ๊ณ์ ๋ณต์กํ ํ์์ ๊ฐ๋จํ ํํ๋ก ๋ชจ๋ธ๋งํ๋ค. (simplify)
์ต์ํ์ ์ ๋ณด๋ฅผ ์ถ์ถ
c. ์บก์ํ
- ๊ตฌํ ๋ด์ฉ์ ๋ด๋ถ์ ์จ๊ฒจ์ ์์ง๋๋ฅผ ๋์ด๋ ๊ฒ
- ์์ง๋ : ๊ฐ์ฒด๊ฐ ์์ ๊ณผ ๊ด๋ จ๋ ๊ฒ์ ์ค์ฌ์ ์ผ๋ก ํ๋ํ๋ค.
c-1. ๊ฒฐํฉ๋
- ๋ ๊ฐ์ฒด๊ฐ ์๋ก ๊ด๋ จ๋๊ฑฐ๋ ์์กดํ๋ ์ ๋
- ์ ์ข์๊ฑฐ (๊ฐ์ฒด๋ฅผ ๋ผ์ด๋ด๊ฑฐ๋ ๋ณ๊ฒฝํ๊ธฐ ํ๋ค๋ค)
c-2. ์บก์ํ๋ฅผ ์๋ฐํ ์ฌ๋ก
- ์ ๋ฌธ๋ฐฐ๋ฌ๋ถ๊ฐ ๊ณ ๊ฐ์ ์ง๊ฐ์ ๊ฐ์ ธ์์, ํ๊ธ์ ํ์ธํ๊ณ , ๋์ ๊ฐ์ ธ๊ฐ๋๊ฒ ์๋๋ผ
- ๊ณ ๊ฐ์ด ์์ ์ ์ง๊ฐ์ ํ๊ธ์ ํ์ธํ๊ณ , ๋์ ์ ๋ฌธ๋ฐฐ๋ฌ๋ถ์๊ฒ ๊ฑด๋ค์ฃผ๋ ๊ฒ
d. ์์
- ๋ถ๋ชจ์ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๋ฌผ๋ ค๋ฐ์ ์ ์๋ค.
1-2. SOLID
์ข์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ๋ฅผ ์ํ 5๊ฐ์ง ์์น
a. Single-Responsibility Principle (๋จ์ผ ์ฑ ์ ์์น)
- ๊ฐ์ฒด๋ ์ค๋ก์ง ํ๋์ ์ฑ ์์ ๊ฐ๋๋ค
- ๊ณตํต๋ ์ผ์ ํ๋ ๊ฐ์ฒด๋ฅผ ํ๋ ๋ ์ผ๋ก์จ, ์ค๋ณต๋ ์ฝ๋๋ฅผ ์ต๋ํ ์ ๊ฑฐํ๋ค.
b. Open/Closed Principle (๊ฐ๋ฐฉ/ํ์ ์์น)
- ๋ณ๊ฒฝ์๋ ๋ซํ์๊ณ ํ์ฅ์๋ ์ด๋ ค์๋ค.
- ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ๋ฐ๋์ง ์๋๋ก ํ๋ค.
- ๋ถ๋ชจ class์์ ์์ class๋ฅผ ๋ง๋ค ๋, ์์ class์์ ๊ธฐ๋ฅ์ ์ถ๊ฐ/์์ ํ ์ ์์ง๋ง,
์์ class๋ฅผ ์ํด ๋ถ๋ชจ class๊ฐ ์์ ๋ ํ์๋ ์๋ค.
c. Liskovโs Substitution Principle (๋ฆฌ์ค์ฝํ ์นํ ์์น)
- ์์ ํ์ ์ ํ์ ํ์ ์ผ๋ก ๋ฐ๊พธ๋๋ผ๋ ์ ์ ์๋ํด์ผ ํ๋ค.
- Ex. ์ ์ฌ๊ฐํ์ ์ง์ฌ๊ฐํ์ ์์ฑ์ ์์์ ๋ฐ๋ ์๊ฐ ์ ์ฌ๊ฐํ์ ์ฑ์ง์ ์๋ฐฐ๋๋ค.
- ๋ถ๋ชจ class์ ์์น์ ์์ class๋ก ๋ฃ์ด๋ ์ด๋ ํ issue๋ ์์ด์ผ ํ๋ค๋ ์์น์ด๋ค.
d. Interface Segregation Principle (์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น)
- ํด๋ผ์ด์ธํธ ์ ์ฅ์์ ํ์ํ ๊ธฐ๋ฅ ์ค์ฌ์ผ๋ก ์ธํฐํ์ด์ค๋ฅผ ๋ถ๋ฆฌํ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์์ ๊ณผ ๊ด๋ จ์ด ์๋ ์ธํฐํ์ด์ค๋ ๊ตฌํํ์ง ์์์ผ ํ๋ค.

e. Dependency Inversion Principle (์์กด์ฑ ์ญ์ ๋ฒ์น)
- ์ ์์ค ๋ชจ๋์ด ๊ณ ์์ค ๋ชจ๋์์ ์ ์ํ ์ถ์ ํ์ ์ ์์กดํด์ผ ํ๋ค.
- -> ๋ถ๋ชจ class๋ ์์ class์ ์์กดํด์๋ ์๋๋ค.
- ํด๋ผ์ด์ธํธ ์ ์ฅ์์ ํ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ถ์ถํ๋ค.
- ๋ ๋ฆฝ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํด์ง ๋ค๋ ์ฅ์

2. FP
a. Pure Function (์์ํจ์)
- ๊ฐ์ ์ ๋ ฅ๊ฐ์๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๋ค.
- ๊ทธ๋ฌ๋ฉด์ side effect๊ฐ ์๋ ๊ฒ.
return 2*x
vsalpha = x; return 2*alpha
: ์ ์๊ฐ ์์ํจ์
b. Immutability (๋ถ๋ณ์ฑ)
- ์ด๋ฏธ ์ ์ฅ๋ ๊ฐ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- oop์์๋ Private, Public ๋ฑ์ ์ ๊ทผ ์ ์ด์๋ก ํต์ ๋ฅผ ํ ์ ์์ง๋ง, FP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฌด๋ฐ ๋ด๋ถ ์ํ๋ฅผ ๋ณํ์ํค์ง ์๋๋ค.
- ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ํ์ํ ๊ฒฝ์ฐ, ๊ทธ ๋ฐ์ดํฐ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด ๋ณ๊ฒฝํ๊ณ , ํด๋น ๋ณต์ฌ๋ณธ์ ์ฌ์ฉํด ์์ ํ๋ค.
c. Declerative Pattern (์ ์ธ์ ํจํด)
- How ๋ณด๋ค๋ What์ ์ง์คํ๋ค.
// ๋ช
๋ นํ ํ๋ก๊ทธ๋๋ฐ. ์ด๋ป๊ฒ ์ํํ ์ง
let numbers = [1, 2, 3];
function multiply(numbers, multiplier) {
for (let i = 0; i < numbers.length; i++) {
numbers[i] = numbes[i] * multiplier;
}
}
// ํจ์ํ ํ๋ก๊ทธ๋๋ฐ. ๋ฌด์์ ์ํํ ์ง
function multiply(number, multiplier) {
return number.map((num) => num * multiplier);
}
- Map, filter ๋ฑ๋ฑ์ด ํจ์ํ ์ฝ๋๋ผ๊ณ ํจ
d. First Class Function (1๊ธ ๊ฐ์ฒด)
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์ ํจ์๋ฅผ 1๊ธ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ค.
- ๋ณ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์ ๋ด์ ์ ์๊ณ , ํ๋ผ๋ฏธํฐ๋ ๋ฐํ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- ์์ง ์๋ฐ์์ ํจ์๋ฅผ 1๊ธ ๊ฐ์ฒด๋ก ์ทจ๊ธํ์ง ์์
// 1๊ธ ๊ฐ์ฒด
const addTwo = (num) => num + 2;
const multiplyTwo = (num) => num * 2;
const transform = (numbers) => numbers.map(addTwo).map(multiplyTwo);
console.log(transform([1, 2, 3, 4])); // [6, 8, 10, 12]
e. High Order Function (๊ณ ์ฐจํจ์)
- ํจ์๋ฅผ ํจ์์ ์ธ์๋ก ๋ฐ๋๋ค.
- ํจ์์ ๋ฐํ๊ฐ์ผ๋ก ๋ ๋ค๋ฅธ ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
const func1 = (func) => (word) => {
func();
console.log(`${word}`);
};
e.1 ์ปค๋ง(currying) ๊ธฐ๋ฒ
- ์ธ์๊ฐ ์ฌ๋ฌ๊ฐ์ธ ํจ์์ ์ผ๋ถ ์ธ์๋ฅผ ๊ณ ์ ์ํค๋ ์๋ก์ด ํจ์๋ฅผ ๋ง๋๋ ๊ธฐ๋ฒ
function helloFunc(word) {
return function (name) {
console.log(`${word}, ${name}`);
};
}
const printHello = helloFunc("hello");
printHello("Tibetan Fox"); // hello, Tibetan Fox
printHello("Tiger"); // hello, Tiger
- ์ปค๋ง ๊ธฐ๋ฒ์ ์ผ๋ถ ์ธ์์ ๊ฐ์ ๊ฐ์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ ๋ ๊ทธ ๋ฐ๋ณต๋๋ ์ธ์๋ฅผ ๊ณ ์ ํจ์ผ๋ก์จ ์ค๋ณต์ ์ต์ํ ํ๊ธฐ์ ์ ํฉํ ๊ธฐ๋ฒ
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ์ค ํ๋
- ์์ ํจ์๋ฅผ ํตํด์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ๊ฐ ํ๋ฅธ๋ค
- ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ฅ์ ์ ๊ฐ์ง๋ค (์์ํจ์->๋ถ์ํจ๊ณผ๊ฐ ์๋ค. ์ฆ, ์ค๋ ๋์ ์์ ์ฑ ๋ณด์ฅ)
- ๊ฐ๊ฒฐํ๊ณ ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค