Skip to main content

๋””์ž์ธ ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฆฌํŒฉํ„ฐ๋ง

Copilot Chat์€ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋””์ž์ธ ํŒจํ„ด์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์ •๋œ ๋””์ž์ธ ํŒจํ„ด(์˜ˆ: ์‹ฑ๊ธ€ํ†ค, ํŒฉํ„ฐ๋ฆฌ, ์˜ต์„œ๋ฒ„)์„ ๋”ฐ๋ฅด์ง€ ์•Š๋Š” ์ฝ”๋“œ๋Š” ๊ธด๋ฐ€ํ•œ ๊ฒฐํ•ฉ, ์œ ์—ฐ์„ฑ ๋ถ€์กฑ, ์ค‘๋ณต๋œ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Copilot Chat์„ ์‚ฌ์šฉํ•˜๋ฉด ์ ์ ˆํ•œ ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ˜๋ณต ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ํŒฉํ„ฐ๋ฆฌ ํŒจํ„ด์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ๊ด€์ฐฐ์ž ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋œ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ

์ด ๋ฌธ์„œ์— ์„ค๋ช…๋œ ์‘๋‹ต์€ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. Copilot Chat ์‘๋‹ต์€ ๋น„๊ฒฐ์ •์ ์ด๋ฏ€๋กœ ์—ฌ๊ธฐ์— ํ‘œ์‹œ๋œ ์‘๋‹ต๊ณผ ๋‹ค๋ฅธ ์‘๋‹ต์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ ์‹œ๋‚˜๋ฆฌ์˜ค

์ด JavaScript ์ฝ”๋“œ๋Š” ๊ฐ๊ฐ name ๋ฐ age ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ Person ๊ฐœ์ฒด ์„ธ ๊ฐœ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ, ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
}

var people = {};

function addPerson(name, age) {
  people[name] = new Person(name, age);
}

function getAge(name) {
  if (people[name]) {
    console.log(name + " is " + people[name].age + " years old.");
  } else {
    console.log("Person not found.");
  }
}

addPerson("Ana", 30);
addPerson("Mario", 25);
addPerson("Louise", 40);

getAge("Mario");

์˜ˆ์ œ ํ”„๋กฌํ”„ํŠธ 1

What design patterns could improve this code? Don't show me code examples.

์˜ˆ์ œ ์‘๋‹ต 1

Copilot๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒจํ„ด์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  • ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด: people ๊ฐœ์ฒด์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ํŒฉํ„ฐ๋ฆฌ ํŒจํ„ด: Person ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํŒฉํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ๋ชจ๋“ˆ ํŒจํ„ด: ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์˜ค์—ผํ•˜์ง€ ์•Š๋„๋ก ๋ชจ๋“ˆ ๋‚ด์˜ people ๊ฐœ์ฒด์™€ ๊ด€๋ จ ํ•จ์ˆ˜๋ฅผ ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ ํ”„๋กฌํ”„ํŠธ 2

์ด์ œ Copilot์—๊ฒŒ ๊ฐ€์žฅ ์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Refactor this code using the module pattern

์˜ˆ์ œ ์‘๋‹ต 2

const PersonModule = (function() {
  class Person {
    constructor(name, age) {
      this.name = name;
      this.age = age;
    }
  }

  const people = {};

  function addPerson(name, age) {
    people[name] = new Person(name, age);
  }

  function getAge(name) {
    if (people[name]) {
      console.log(name + " is " + people[name].age + " years old.");
    } else {
      console.log("Person not found.");
    }
  }

  return {
    addPerson,
    getAge
  };
})();

PersonModule.addPerson("Ana", 30);
PersonModule.addPerson("Mario", 25);
PersonModule.addPerson("Louise", 40);

PersonModule.getAge("Mario");

๋ชจ๋“ˆ ํŒจํ„ด์€ ์ฝ”๋“œ ์กฐ์ง์„ ๊ฐœ์„ ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ํ–ฅ์ƒํ•˜๋ฉฐ, ๋ช…๋ช… ์ถฉ๋Œ ์œ„ํ—˜์„ ์ค„์—ฌ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ํ™•์žฅ์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ฐธ๊ณ  ์ž๋ฃŒ