๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ—‚๏ธ ์Šคํ„ฐ๋”” ํ™œ๋™/๐Ÿ“— ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ

[๋งˆ๋ฌด๋ฆฌ] ํด๋ฆฐ์ฝ”๋“œ์™€ ๋‹Œ์ž์ฝ”๋“œ

by ๐Ÿ’พ๊ณ ๊ตฌ๋งˆ๋ง›ํƒ•๋จน๊ณ ์‹ถ๋‹ค 2024. 10. 17.
728x90

๐Ÿฅท ๋‹Œ์ž์ฝ”๋“œ

๋‹Œ์ž๋ผ ๋ถˆ๋ฆฌ๋˜ ์ „์„ค ์† ๊ฐœ๋ฐœ์ž๋“ค์€ ์œ ์ง€๋ณด์ˆ˜ ๋‹ด๋‹น ๊ฐœ๋ฐœ์ž๋ฅผ ํ˜น๋…ํ•˜๊ฒŒ ํ›ˆ๋ จํ•˜๊ธฐ์œ„ํ•ด ๋‹ค์–‘ํ•œ ํŽธ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

  1. ์ฝ”๋“œ ์งง๊ฒŒ ์“ฐ๊ธฐ
  2. ๊ธ€์ž ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ
  3. ์•ฝ์–ด ์‚ฌ์šฉํ•˜๊ธฐ
  4. ํฌ๊ด„์ ์ธ ๋ช…์‚ฌ ์‚ฌ์šฉํ•˜๊ธฐ
  5. ์ฒ ์ž๊ฐ€ ์œ ์‚ฌํ•œ ๋‹จ์–ด ์‚ฌ์šฉํ•˜๊ธฐ
  6. ๋™์˜์–ด ์‚ฌ์šฉํ•˜๊ธฐ
  7. ์ด๋ฆ„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ
  8. ์žฌ๋ฏธ๋กœ ์–ธ๋”์Šค์ฝ”์–ด ์‚ฌ์šฉํ•˜๊ธฐ
  9. ๊ณผ์žฅ ํ˜•์šฉ์‚ฌ ์‚ฌ์šฉํ•˜๊ธฐ
  10. ์™ธ๋ถ€ ๋ณ€์ˆ˜ ๋ฎ์–ด์“ฐ๊ธฐ
  11. ๋ถ€์ž‘์šฉ์ด ์žˆ๋Š” ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ
  12. ํ•จ์ˆ˜์— ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ๋„ฃ๊ธฐ
// ์ถœ์ฒ˜: ์•„์ฃผ ์œ ๋ช…ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;

function ninjaFunction(elem) {
  // ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„์˜จ elem์„ ์ด์šฉํ•œ ์ฝ”๋“œ

  elem = clone(elem);

  // elem์˜ ๋ณต์ œ(clone)๋ณธ์„ ์ด์šฉํ•œ ์ฝ”๋“œ
}

 

๐Ÿ“Œ ํด๋ฆฐ์ฝ”๋“œ์™€ ๋‹Œ์ž์ฝ”๋“œ ๋น„๊ต

๊ฐ€๋…์„ฑ ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ดํ•ด ๊ฐ€๋Šฅ ์ž‘์„ฑ์ž ๋ณธ์ธ๋งŒ ์ดํ•ด ๊ฐ€๋Šฅ
์œ ์ง€๋ณด์ˆ˜์„ฑ ์ˆ˜์ • ๋ฐ ํ™•์žฅ์ด ์šฉ์ด ์ˆ˜์ • ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ๋†’์Œ
์ฝ”๋“œ ์Šคํƒ€์ผ ๋ช…ํ™•ํ•œ ๋„ค์ด๋ฐ, ์ค‘๋ณต ์ตœ์†Œํ™”, ๊ฐ„๊ฒฐํ•œ ๊ตฌ์กฐ ์งง๊ณ  ์ถ•์•ฝ๋œ ์ฝ”๋“œ, ๊ฐ€๋…์„ฑ ๋‚ฎ์Œ
์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ ์ ˆํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ œ๊ณต ๋ถˆ๋ช…ํ™•ํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐฉ์‹

 

๐Ÿ’ป ๋‹Œ์ž์ฝ”๋“œ ์˜ˆ์‹œ

class L {
  constructor() {
    this.b = [];
  }

  aB(b) {
    if (!b || !b.t || !b.a) throw 'ํ•„์ˆ˜ ์ •๋ณด ๋ˆ„๋ฝ';
    this.b.push(b);
  }

  gB(a) {
    if (!a) throw '์ €์ž ํ•„์š”';
    return this.b.filter(x => x.a === a);
  }

  gT() {
    return this.b.map(x => x.t);
  }
}

const l = new L();

l.aB({ t: 'Clean Code', a: 'Robert C. Martin' });
l.aB({ t: 'JavaScript: The Good Parts', a: 'Douglas Crockford' });


console.log(l.gB('Robert C. Martin'));
console.log(l.gT()); 

// ์ถœ๋ ฅ ๊ฒฐ๊ณผ
// [{ t: 'Clean Code', a: 'Robert C. Martin' }]
// ['Clean Code', 'JavaScript: The Good Parts']

 

  • ์ถ•์•ฝ๋œ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜ ์ด๋ฆ„
    • L ๋Œ€์‹  Library๊ฐ€ ์•„๋‹Œ ์ถ•์•ฝ๋œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์‚ฌ์šฉ
    • ํ•จ์ˆ˜ ์ด๋ฆ„๋“ค๋„ aB, gB, gT์ฒ˜๋Ÿผ ์ถ•์•ฝ๋˜์–ด ์žˆ์–ด ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š๋‹ค.
    • ๋ณ€์ˆ˜ b, t, a ์—ญ์‹œ ๋ถˆ๋ช…ํ™•ํ•˜๋ฉฐ, ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์€ ์ด๋“ค์ด ๊ฐ๊ฐ books, title, author๋ฅผ ์˜๋ฏธํ•˜๋Š”์ง€ ์ฆ‰์‹œ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
  • ๊ฐ„๋‹จํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€
    • ๋ช…ํ™•ํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋Œ€์‹  "ํ•„์ˆ˜ ์ •๋ณด ๋ˆ„๋ฝ", "์ €์ž ํ•„์š”"์ฒ˜๋Ÿผ ๋งค์šฐ ๊ฐ„๋žตํ•œ ๋ฉ”์‹œ์ง€๋งŒ ๋˜์ง€๊ณ  ์žˆ์–ด, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ •ํ™•ํ•œ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
  • ๊ฐ€๋…์„ฑ ์ €ํ•˜
    • ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๋ชจ๋‘ ์ถ•์•ฝ๋˜์–ด ์žˆ์–ด ์ฝ”๋“œ์˜ ์˜๋„๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค๋‹ค. ์ฝ”๋“œ๊ฐ€ ์งง๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ์ง€๋งŒ, ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ์„ฑ์ด ํฌ๊ฒŒ ๋–จ์–ด์ง„๋‹ค.

-> ํด๋ฆฐ์ฝ”๋“œ๋Š” ํ˜‘์—…๊ณผ ์žฅ๊ธฐ์ ์ธ ์ฝ”๋“œ ์œ ์ง€์— ํ•„์ˆ˜์ ์ธ ๋ฐฉ์‹์ด๋‹ค. ๋ช…ํ™•ํ•œ ๋„ค์ด๋ฐ๊ณผ ๊ฐ„๊ฒฐํ•œ ๊ตฌ์กฐ๋Š” ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ณ , ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค.

 

 

๐Ÿคฃ ๋‹Œ์ž ์ฝ”๋“œ ์š”์•ฝ

1. ํŽธ๋ฒ• ์ค‘ ๋ช‡ ๊ฐœ๋งŒ ์‚ฌ์šฉํ•ด๋„, ๋†€๋ผ์šด ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

2. ํŽธ๋ฒ•์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค์–ด์ ธ์„œ ๋‹น์‹ ์„ ํ•ด๊ณ ํ•  ์ˆ˜ ์—†๋‹ค.

3. ํŽธ๋ฒ•์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ฉด ํ›„๋ฐฐ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์—„์ฒญ๋‚œ ์˜๊ฐ์„ ์‹ฌ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

https://kr.freepik.com/free-vector/flat-design-ninja-logo-template_15477911.htm#fromView=search&page=1&position=4&uuid=f3dbace2-e7c0-4637-9f80-d6e87495529d

 

์ฐธ๊ณ  : ๋ชจ๋˜ JavaScript ํŠœํ† ๋ฆฌ์–ผ

https://ko.javascript.info/ninja-code

 

๋‹Œ์ž ์ฝ”๋“œ

 

ko.javascript.info

 

 

728x90