Skip to content

cplusplus_coding_techniques

Kyusung, Hwang edited this page Oct 3, 2019 · 1 revision

์ฝ”๋”ฉ์˜ ๊ธฐ์ˆ 

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ๊ธฐ๋ณธ

์บก์Аํ™”

  • getter ์™€ setter ๋ฅผ ๋˜๋„๋ก ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ฒƒ.
  • ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„๋ผ๋„ private ์„ ์‚ฌ์šฉํ•˜์ž.
// bad
Vector2 postion = player.getPosition();
position += player.getVelocity();
player.setPosition(position);

// good
// '์ง์ ‘ํ•˜์ง€ ๋ง๊ณ  ๋ช…๋ นํ•˜๋ผ'
player.move();

์‘์ง‘๋„

  • ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ๋งŒ๋“ค์ž.
// bad
class Game {
  private:
    int   score;
    float timer;
    list<Actor*> actors;
};

// good
// ํด๋ž˜์Šค ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ๋ผ๋ฉด ํ•˜๋‚˜์˜ ์—ญํ• ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
class Score {
  private:
    int score;
}

class Timer {
  private:
    float time;
}

class ActorManager {
  private:
    list<Actor*> actors;
}

class Game {
  private:
    Score score;
    Timer timer;
    ActorManager actors;
}

๊ฒฐํ•ฉ๋„

  • ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ๊ฒŒ ์„ค๊ณ„ํ•˜์ž.
  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ต๋‹ค๋ฉด ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์€ ๊ฒƒ.

์ƒ์†๊ณผ ์ด์–‘(์œ„์ž„)

  • ์ƒ์†๋ณด๋‹ค๋Š” ์ด์–‘์„ ์šฐ์„ ํ•ด์„œ ์„ค๊ณ„ํ•˜์ž.
// bad
class Robot {
  public:
    void update() {
      move();
    }

  private:
    virtual void move() = 0;
}

class CleanerRobot : public Robot {
  private:
    virtual void move() ovveride {}
}

class CombatRobot : public Robot {
  private:
    virtual void move() override {}
}

// good
class Robot {
  public:
    Robot(RobotBehavior* behavior) : _behavior(behavior) {}
    ~Robot() {
      delete _behavior;
    }
    void update() {
      _behavior->move();
    }
  private:
    RobotBehavior* _behavior;
  }

class CleanerBehavior : public RobotBehavior {
  public:
    virtual void move() override {}
}

class CombatBehavior: public RobotBehavior {
  public:
    virtual void move() override {}
}

// usage
Robot cleanerRobot(new CleanerBehavior());
Robot combatRobot(new CombatBehavior());
  • ์ƒ์† ๊ด€๊ณ„์—์„  ์‹คํ–‰์ค‘ ๋ณ€๊ฒฝ์ด ์–ด๋ ต๊ณ , ์ด์–‘์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค.
cleaner.Robot.changeBehavior(new CombatBehavior());
  • ๋‹ค๋ฅธ ์œ ํ˜•์˜ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋•Œ๋„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
SuperRobot superRobot(new CombatBehavior());

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ์›์น™

๋‹จ์ผ ์ฑ…์ž„์˜ ์›์น™ (SRP, Single Responsibility Principle)

  • ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

๊ฐœ๋ฐฉ ํ์‡„ ์›์น™ (OCP, Open-Closed Principle)

  • ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ๋Š” ํ™•์žฅ์— ๊ด€ํ•ด์„œ๋Š” ์—ด๋ ค์žˆ์–ด์•ผ ํ•˜๊ณ , ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๋ณ€ํ™”ํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„๊ณผ ์—ด๋ฆฐ ๋ถ€๋ถ„์„ ๋ถ„๋ฆฌํ•˜์ž.
  • ์ถ”์ƒ ํด๋ž˜์Šค (๋‹ซํžŒ ๋ถ€๋ถ„), ๊ตฌํ˜„ ํด๋ž˜์Šค (์—ด๋ฆฐ ๋ถ€๋ถ„)

๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ (LSB, Liskov Substitution Principle)

  • ํŒŒ์ƒ ์ž๋ฃŒํ˜•์€ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•๊ณผ ์น˜ํ™˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ ์น˜ํ™˜ํ•œ ์ƒํƒœ์—์„œ๋„ ์ •์ƒ ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค.
  • ๊นŠ์€ ์ƒ์†๊ด€๊ณ„๋ฅผ ๋งŒ๋“ค์ง€ ๋ง๊ณ , ์œ„์ž„์„ ์šฐ์„ ํ•˜์ž.

์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ (ISP, Interfcae Segregation Principle)

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

์˜์กด ๊ด€๊ณ„ ์—ญ์ „ ์›์น™ (DIP, Dependency Inversion Principle)

  • ์ƒ์œ„ ๋ชจ๋“ˆ์€ ํ•˜์œ„ ๋ชจ๋“ˆ์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค, ๋‘ ๋ชจ๋“ˆ ๋ชจ๋‘ ๋ณ„๋„์˜ ์ถ”์ƒํ™” ๋œ๊ฒƒ์— ์˜์กดํ•œ๋‹ค.
  • ๊ตฌ์ฒด์ ์ธ๊ฒƒ์ด ์•„๋‹Œ ์ถ”์ƒ์ ์ธ๊ฒƒ์— ์˜์กดํ•˜์ž.

๋ฐ๋ฉ”ํ…Œ๋ฅด ๋ฒ•์น™

  • ์ตœ์†Œ ์ง€์‹์˜ ์›์น™, ์ง์ ‘์ ์ธ ์นœ๊ตฌ์™€๋งŒ ๊ด€๋ จํ•œ๋‹ค.
// bad
Player* player = world_.getManager().find("player");

// good
Player* palyer = world.find("Player");

๋””์ž์ธ ํŒจํ„ด

Template Method ํŒจํ„ด

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

Strategy ํŒจํ„ด

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ณ€ํ™”(์ „๋žต)ํ•˜๋Š” ๋ถ€๋ถ„์„ ํด๋ž˜์Šคํ™”ํ•ด์„œ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํŒจํ„ด
  • switch ์กฐ๊ฑด๋ฌธ์ด ๋‚˜์˜ค๋ฉด Strategy ํŒจํ„ด์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š”์ง€ ์‚ดํŽด๋ณผ ๊ฒƒ
  • Strategy ํŒจํ„ด์€ ์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ ๋ถ€๋ถ„์„ ๊ตํ™˜ํ•˜๋Š” ๊ณ ์ „์ ์ธ ํŒจํ„ด

State ํŒจํ„ด

  • ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ƒํƒœ๋ฅผ ํด๋ž˜์Šคํ™”ํ•˜๋Š” ํŒจํ„ด
  • Strategy ํŒจํ„ด๊ณผ ๊ตฌํ˜„๋ฐฉ๋ฒ•์ด ๊ฑฐ์˜ ๋น„์Šทํ•˜์ง€๋งŒ, ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์ด ๋‹ค๋ฅด๋‹ค.

Composite ํŒจํ„ด

  • ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ์žฌ๊ท€์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŒจํ„ด
  • ๊ฒŒ์ž„ ์—”์ง„์˜ ๊ฒŒ์ž„ ๊ฐ์ฒด ๊ด€๋ฆฌ ๋“ฑ์— ์ž์ฃผ ์‚ฌ์šฉ๋จ.

Iterator ํŒจํ„ด

  • ์ปจํ…Œ์ด๋„ˆ ํด๋ž˜์Šค ๋‚ด๋ถ€ ์š”์†Œ์— ์ˆœ์„œ๋Œ€๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.
  • ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ตฌํ˜„ ์ƒ์„ธ๋ฅผ ์บก์Аํ™”

Observer ํŒจํ„ด

  • ๊ฐ์ฒด์˜ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ํ†ต์ง€ํ•ด์ฃผ๋Š” ํŒจํ„ด

Singleton ํŒจํ„ด

  • ๊ฐ์ฒด ์ธ์Šคํ„ด์Šคํ™”๋ฅผ 1 ๊ฐœ๋กœ ์ œํ•œํ•˜๊ณ , ์ „์—ญ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํŒจํ„ด

ํด๋ž˜์Šค ์„ค๊ณ„ ์š”๋ น

ํด๋ž˜์Šค ์„ค๊ณ„์˜ ๊ธฐ๋ณธ

  • ํด๋ž˜์Šค ์„ค๊ณ„๋Š” ํ˜„์‹ค ์„ธ๊ณ„์˜ ์—…๋ฌด ๋ถ„๋‹ด๊ณผ ๋น„์Šท
  • ๊ฐ ํด๋ž˜์Šค์˜ ์—ญํ• ์„ ์ •ํ•˜๊ณ , ์—…๋ฌด ์ฑ…์ž„์„ ๋ถ„๋‹ดํ•˜๋Š” ์ž‘์—…
  • ํด๋ž˜์Šค ์‚ฌ์šฉ ๊ด€์ ์—์„œ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„๋ณด๋‹ค๋Š” ์–ด๋–ค ์—ญํ• ๊ณผ ์ฑ…์ž„์ด ์žˆ๋Š”์ง€๊ฐ€ ์ค‘์š”ํ•จ.

ํด๋ž˜์Šค์˜ ์—ญํ• 

  • ์ž‘์—…๊ณผ ๊ด€๋ฆฌ, ์ค‘์žฌ, ์ฐฝ๊ตฌ, ์ƒ์„ฑ, ์ „์šฉ๊ณผ ๋ฒ”์šฉ
  • ์ž‘์—…๊ณผ ์—ญํ•  ํด๋ž˜์Šค์™€ ๊ด€๋ฆฌ ํด๋ž˜์Šค

    • ์ž‘์—… ์—ญํ•  ํด๋ž˜์Šค๋Š” ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„์„, ๊ด€๋ฆฌ ์—ญํ•  ํด๋ž˜์Šค๋Š” ์ž‘์—… ์—ญํ•  ํด๋ž˜์Šค๋ฅผ ์ œ์–ด
    • ๊ฐœ์ž์ด๋„ˆ -> ๊ด€๋ฆฌ์ž - ์„ค๊ณ„์ž/ํ”„๋กœ๊ทธ๋ž˜๋จธ/๋””์ž์ด๋„ˆ
    • 1 ๊ฐœ์˜ ํด๋ž˜์Šค์— ๋„ˆ๋ฌด ๋งŽ์€ ์ผ์„ ์ฃผ์ง€ ๋ง๊ฒƒ.
  • ์ค‘์žฌ ์—ญํ•  ํด๋ž˜์Šค

    • ๊ฐ์ฒด๋“ค์˜ ์กฐ์ •์„ ๋‹ด๋‹น
    • Mediator ํŒจํ„ด์— ํ•ด๋‹นํ•จ
    • ์ค‘์žฌ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์˜์กด ๊ด€๊ณ„๋ฅผ ๋‹จ์ˆœํ™” ํ•˜์ž.
  • ์ฐฝ๊ตฌ ์—ญํ•  ํด๋ž˜์Šค

    • ์ž‘์—…์„ ์˜๋ขฐ๋ฐ›๊ณ  ์‹ค์งˆ์ ์ธ ์ž‘์—…์„ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ์ „๋‹ฌํ•˜๋Š” ์—ญํ• 
    • Facade ํŒจํ„ด์— ํ•ด๋‹น
    • ์™ธ๋ถ€์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค ๋ถ€๋ถ„์„ ํด๋ž˜์Šคํ™” ํ•˜์ž.
  • ์ƒ์„ฑ ์—ญํ•  ํด๋ž˜์Šค

    • ๊ฐ์ฒด ์ƒ์„ฑ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณต์žฅ๊ณผ ๊ฐ™์€ ํด๋ž˜์Šค
    • ๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ ๋˜๋Š” ์ˆ˜์ •์ด ๊ฐ„๋‹จํ•ด์ง€๊ณ  ์—ฐ๊ด€์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
    • Abstract Factory ํŒจํ„ด
  • ์ „์šฉํด๋ž˜์Šค์™€ ๋ฒ”์šฉ ํด๋ž˜์Šค

    • ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์ „์šฉ ํด๋ž˜์Šค์™€ ์žฌ์‚ฌ์šฉ์„ ๋ชฉ์ ์œผ๋กœ ํ•˜๋Š” ๋ฒ”์šฉ ํด๋ž˜์Šค๋ฅผ ๊ตฌ๋ณ„ํ•ด์„œ ์„ค๊ณ„ํ•˜์ž.

ํด๋ž˜์Šค์˜ ์ฑ…์ž„

  • ๋ช…ํ™•ํ•œ ์—ญํ• ๊ณผ ์ฑ…์ž„์„ ๊ฐ–๊ฒŒ ํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค.
  • ์‚ฌ์šฉ์ž ์ธก์˜ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๋‹จํ•ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ๋‹ด๋‹น ํด๋ž˜์Šค์— ์ œ๋Œ€๋กœ ์ด์–‘ํ•˜์ž.

ํด๋ž˜์Šค์˜ ์ถ”์ƒ๋„

  • ์ถ”์ƒ๋„๊ฐ€ ๋†’์œผ๋ฉด ์ฝ”๋“œ๊ฐ€ ๋‹จ์ˆœํ•ด์ ธ์„œ ์ˆ˜์ • ๋˜๋Š” ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • '๋ฌธ์ œ์˜ ๋ณธ์งˆ'์„ ํŒŒ์•…ํ•ด์„œ ์ถ”์ƒ๋„๋ฅผ ๋†’์ด์ž.
  • ํด๋ž˜์Šค ์‚ฌ์šฉ์ž์ธก์ด ์‹œ์ ์—์„œ๋ถ€ํ„ฐ ํƒ‘๋‹ค์šด(top-down) ํ•ด์„œ ์ƒ๊ฐํ•˜๋ฉด ์ถ”์ƒ๋„ ๋†’์€ ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ถ”์ƒ๋„ ๋†’์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ• ์ง€ ์ƒ๊ฐํ•ด๋ณด์ž.

ํด๋ž˜์Šค ๊ฒฐํ•ฉ

  • ์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์šฉํ•ด ์†Œ๊ฒฐํ•ฉ์œผ๋กœ ์œ ๋„ํ•˜์ž.

์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  • ํด๋ž˜์Šค ๊ณตํ†ตํ™”: ๋ถ€๋ชจ ํด๋ž˜์Šค ๋˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด ํด๋ž˜์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•
  • ๊ตฌํ˜„ ์ˆ˜๋‹จ ๊ตํ™˜: Strategy ํŒจํ„ด
  • ๋ณ€ํ™”ํ•˜๊ธฐ ์‰ฌ์šด ๋ถ€๋ถ„ ๋ถ„๋ฆฌ: ๊ฐœ๋ฐฉ/ํ์‡„ ์›์น™
  • ๋ถ€์ ์ ˆํ•œ ๊ฒฐํ•ฉ ๊ด€๊ณ„ ๋ถ„๋ฆฌ: ์ค‘์žฌ ์—ญํ•  ๋˜๋Š” ์ฐฝ๊ตฌ ์—ญํ•  ๋‹ด๋‹น, ์ง์ ‘ ๊ฒฐํ•ฉ์„ ๋ถ„๋ฆฌํ•ด์„œ ์†Œ๊ฒฐํ•ฉ์œผ๋กœ ๋งŒ๋“ฆ
  • ํŒจํ‚ค๊ธฐ ๊ฒฝ๊ณ„ ๋ถ„๋ฆฌ: ํŒจํ‚ค์ง€๋ฅผ ๋…๋ฆฝ์‹œํ‚ค๊ณ  ์™ธ๋ถ€ ๋ณ€๊ฒฝ์˜ ์˜ํ–ฅ์„ ํ”ผํ•  ๋•Œ, ์˜์กด๊ด€๊ณ„ ์—ญ์ „์˜ ๋ฒ•์น™

๊ทธ๋ฐ–์—

์ƒ์„ฑ์ž๋กœ ์™„์ „ํ•œ ์ƒํƒœ ๋งŒ๋“ค๊ธฐ

  • ๊ฐ์ฒด๋Š” ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋œ ์‹œ์ ์— ์™„์ „ํ•œ ์ƒํƒœ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.
  • ํ˜ธ์ถœ ์ˆœ์„œ์— ์ œํ•œ์ด ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€๋‹ด๋˜๊ณ , ๋ฒ„๊ทธ์˜ ์›์ธ์ด ๋œ๋‹ค

๋ฉค๋ฒ„ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ˆœ์„œ์™€ ๊ด€๋ จํ•œ ๋Œ€์ฒ˜ ๋ฐฉ๋ฒ•

  • ํ˜ธ์ถœ ์ˆœ์„œ์— ์ œ์•ฝ์ด ์žˆ๋Š” ํด๋ž˜์Šค๋Š”, ์ œ์–ด ์—ญํ• ์„ ํ•˜๋Š” ํด๋ž˜์Šค์™€ ํ•จ๊ป˜ ์กฐํ•ฉํ•ด์„œ ์‚ฌ์šฉ

์ดˆ๊ธฐํ™”๋Š” ์ƒ์„ฑ์ž, ๋’ค์ฒ˜๋ฆฌ๋Š” ์†Œ๋ฉธ์ž๋กœ ์‹œํ–‰

๊ตฌํ˜„ ์ƒ์„ธ๋ฅผ ์€ํํ•˜๋Š” ์ด๋ฆ„ ๋ถ™์ด๊ธฐ

// bad!
// ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” flag ์ˆ˜์ •ํ•˜๋Š”๊ฒƒ์„ ์•Œํ•„์š”๊ฐ€ ์—†๋‹ค.
// ๋ฉค๋ฒ„ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๋ฐ”๋€Œ๋ฉด ์‚ฌ์šฉ์ž์ธก ์ฝ”๋“œ๋„ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•œ๋‹ค.
bool getDeadFlag() {
  return isDead;  
}

// good!
bool isDead() {
  return isDead;
}

Clone this wiki locally