Skip to content

Latest commit

ย 

History

History
174 lines (139 loc) ยท 8.67 KB

Section8.md

File metadata and controls

174 lines (139 loc) ยท 8.67 KB

8์žฅ ๊ฒฝ๊ณ„

์™ธ๋ถ€ ์ฝ”๋“œ ์‚ฌ์šฉํ•˜๊ธฐ

  • ์ œ๊ณต์ž : ์ธํ„ฐํŽ˜์ด์Šค, ํŒจํ‚ค์ง€, ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ ์ ์šฉ์„ฑ์„ ์ตœ๋Œ€ํ•œ ๋„“ํžˆ๋ ค ์• ์“ด๋‹ค.
    • ๋” ๋งŽ์€ ํ™˜๊ฒฝ์—์„œ ๋Œ์•„๊ฐ€์•ผ ๋” ๋งŽ์ด ๊ตฌ๋งคํ•˜๋‹ˆ๊นŒ
  • ์‚ฌ์šฉ์ž : ์ž์‹ ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ์ง‘์ค‘ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž€๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ž…์žฅ์˜ ์ฐจ์ด๋กœ ๊ฒฝ๊ณ„์—์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์†Œ์ง€๊ฐ€ ๋งŽ๋‹ค.

์˜ˆ์‹œ : java.util.Map

Map์€ ๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•˜๊ณ  ์œ ์—ฐํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ์œ„ํ—˜์„ฑ์„ ๊ฐ–๋Š”๋‹ค.

  1. Map์ด ์ œ๊ณตํ•˜๋Š” clear()์™€ ๊ฐ™์€ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ํŠน์ • ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋”๋ผ๋„, ๊ฐ์ฒด ์œ ํ˜•์„ ์ œํ•œํ•˜์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์— ์–ด๋–ค ์œ ํ˜•๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
Map sensors = new HashMap();
Sensor s = (Sensor) sensor.get(sensorId); // ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๊ณ„์† ํ˜•๋ณ€ํ™˜์„ ๋ฐ˜๋ณตํ•ด์•ผํ•จ.

Map์ด ๋ฐ˜ํ™˜ํ•˜๋Š” Object๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ฑ…์ž„์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์žˆ๋‹ค. ๊ณผ์—ฐ ์ด๋Š” ๊นจ๋—ํ•œ ์ฝ”๋“œ์ผ๊นŒ?

2๋ฒˆ ํ•ด๊ฒฐ๋ฒ• : Generics๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ํ˜•์„ ์ œํ•œํ•˜๊ณ  ์ฝ”๋“œ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

Map<String, Sensor> sensors = new HashMap();
Sensor s = sensor.get(sensorId);
  • ํ•˜์ง€๋งŒ 1๋ฒˆ์€ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ๋‹ค.

1๋ฒˆ ํ•ด๊ฒฐ๋ฒ• : ๊ฒฝ๊ณ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํด๋ž˜์Šค ์•ˆ์œผ๋กœ ์ˆจ๊ธด๋‹ค. => ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜ (First Class Collection)

์ผ๊ธ‰ ์ปฌ๋ ‰์…˜ : Collection์„ Wrappingํ•˜๋ฉด์„œ, ๊ทธ ์™ธ ๋‹ค๋ฅธ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒํƒœ
์ถœ์ฒ˜ : ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜ (First Class Collection)์˜ ์†Œ๊ฐœ์™€ ์จ์•ผํ•  ์ด์œ 

public class Sensors {

    private Map sensors = new HashMap();
    
    public Sensor getById(String id){
        return (Sensor) sensors.get(id);
    }
}
  • Map ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ณ€ํ•˜๋”๋ผ๋„ ๋‚˜๋จธ์ง€ ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.
  • Sensors ํด๋ž˜์Šค์•ˆ์—์„œ ๊ฐ์ฒด ์œ ํ˜•์„ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋”์ด์ƒ ์ œ๋„ค๋ฆญ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋“  ํ•˜์ง€ ์•Š๋“  ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ธฐ๋Šฅ์„ ์ œํ•œํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฒฐ๋ก 

  • Map๊ณผ ๊ฐ™์€ ๊ฒฝ๊ณ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ๋Š” ์ด๋ฅผ ์ด์šฉํ•˜๋Š” ํด๋ž˜์Šค๋‚˜ ํด๋ž˜์Šค ๊ณ„์—ด ๋ฐ–์œผ๋กœ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•œ๋‹ค.
  • ์ฆ‰, Map์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต๊ฐœ API์˜ ์ธ์ˆ˜๋กœ ๋„˜๊ธฐ๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฒฝ๊ณ„ ์‚ดํ”ผ๊ณ  ์ตํžˆ๊ธฐ

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

  • ํ•™์Šตํ…Œ์ŠคํŠธ : ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ฐฉ์‹๋Œ€๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•ด ์™ธ๋ถ€ API๋ฅผ ์ตํžˆ๊ณ  ์ดํ•ดํ•˜๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
    • ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋Œ๋ ค๋ณด๋Š”๊ฒƒ.

ํ•™์Šตํ…Œ์ŠคํŠธ ์˜ˆ์‹œ

  1. ์ž๋ฐ” String ํด๋ž˜์Šค์˜ ๋‹ค์–‘ํ•œ ๋ฉ”์†Œ๋“œ(ํ•จ์ˆ˜) ์‚ฌ์šฉ๋ฒ•
public class StringTest {

  @DisplayName("split์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆˆ๋‹ค.")
  @Test
  void split_StringArray() {
    assertThat("1,2".split(",")).containsExactly("1", "2");
    assertThat("1".split(",")).contains("1");
  }

  @DisplayName("substring์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ฌธ์ž์—ด์„ ์ž˜๋ผ๋‚ธ๋‹ค.")
  @Test
  void substring_String_IndexInBounds() {
    assertThat("(1,2)".substring(1, 4)).isEqualTo("1,2");
  }

  @DisplayName("charAt์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ๊ธธ์ด ๋ฒ”์œ„ ๋‚ด ์ธ๋ฑ์Šค๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํŠน์ • ์œ„์น˜ ๋ฌธ์ž๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.")
  @Test
  void charAt_Char_IndexInBounds() {
    String result = "abc";

    assertThat(result.charAt(0)).isEqualTo('a');
    assertThat(result.charAt(1)).isEqualTo('b');
    assertThat(result.charAt(2)).isEqualTo('c');
  }

  @DisplayName("charAt ์‚ฌ์šฉ์‹œ ๋ฌธ์ž์—ด ๊ธธ์ด ๋ฒ”์œ„๋ฅผ ๋„˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ „๋‹ฌํ•˜๋ฉด StringIndexOutOfBoundsException์ด ๋ฐœ์ƒํ•œ๋‹ค.")
  @Test
  void charAt_ThrowsException_IndexOutOfBounds() {
    String result = "abc";

    assertThatThrownBy(() -> {
      result.charAt(3);
    }).isInstanceOf(StringIndexOutOfBoundsException.class)
            .hasMessageContaining("String index out of range: " + 3);

    assertThatThrownBy(() -> {
      result.charAt(-1);
    }).isInstanceOf(StringIndexOutOfBoundsException.class)
            .hasMessageContaining("String index out of range: " + -1);
  }
}
  1. ์ž๋ฐ” Set์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•
public class SetTest {

    private Set<Integer> numbers;

    @BeforeEach
    void setUp() {
        numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
    }

    @DisplayName("Set์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•œ๋‹ค.")
    @Test
    void hasSize_True_InputSetSize() {
        assertThat(numbers).hasSize(3);
    }

    @DisplayName("Set์˜ ํŠน์ • ๊ฐ’ ์กด์žฌ๋ฅผ ํ™•์ธํ•œ๋‹ค. (ValueSource ํ™œ์šฉ ํ…Œ์ŠคํŠธ)")
    @ParameterizedTest
    @ValueSource(ints = {1, 2, 3})
    void contains_True_ExistingValue(int input) {
        assertThat(numbers).contains(input);
    }

    @DisplayName("Set์˜ ํŠน์ • ๊ฐ’ ์กด์žฌ๋ฅผ ํ™•์ธํ•œ๋‹ค. (CsvSource ํ™œ์šฉ ํ…Œ์ŠคํŠธ)")
    @ParameterizedTest
    @CsvSource(value = {"1:true", "2:true", "3:true", "4:false", "5:false"}, delimiter = ':')
    void contains_TrueOrFalse_ExistingOrNonExistingValue(int input, boolean expected) {
        assertThat(numbers.contains(input)).isEqualTo(expected);
    }
}

์ฝ”๋“œ ์ถœ์ฒ˜ : nextstep - tdd ๊ฐ•์˜ ๋ฏธ์…˜ step1

์‚ฌ์šฉ๋ฒ•์„ ์ตํ˜”์œผ๋‹ˆ ๋…์ž์ ์ธ ํด๋ž˜์Šค๋กœ ์บก์Šํ™”ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‚˜๋จธ์ง€ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฒฝ๊ณ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ชฐ๋ผ๋„ ๋œ๋‹ค.

ํ•™์Šต ํ…Œ์ŠคํŠธ๋Š” ๊ณต์งœ ์ด์ƒ์ด๋‹ค.

  • ํ•™์Šต ํ…Œ์ŠคํŠธ๋Š” ํ•„์š”ํ•œ ์ง€์‹์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์„ ๋ฟ ์•„๋‹ˆ๋ผ, ํŒจํ‚ค์ง€ ์ƒˆ ๋ฒ„์ „์ด ๋‚˜์˜จ๋‹ค๋ฉด ์ด๋ฅผ ๋Œ๋ ค ์ฐจ์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ์šฐ๋ฆฌ ์ฝ”๋“œ์™€ ํ˜ธํ™˜๋˜๋Š”์ง€ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋งŒ์•ฝ ์ด๋Ÿฐ ๊ฒฝ๊ณ„ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์‰ฌ์›Œ์ง€๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋‚ก์€ ๋ฒ„์ „์„ ํ•„์š” ์ด์ƒ์œผ๋กœ ์˜ค๋ž˜ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์œ ํ˜น์— ๋น ์ง€๊ธฐ ์‰ฝ๋‹ค.
  • ์ฆ‰, ํ•™์Šต ํ…Œ์ŠคํŠธ๋Š” ํˆฌ์žํ•˜๋Š” ๋…ธ๋ ฅ๋ณด๋‹ค ์–ป๋Š” ์„ฑ๊ณผ๊ฐ€ ๋” ํฌ๋‹ค.

์•„์ง ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ

๊ฒฝ๊ณ„์™€ ๊ด€๋ จํ•ด ๋˜ ๋‹ค๋ฅธ ์œ ํ˜•์€ ์•„๋Š” ์ฝ”๋“œ์™€ ๋ชจ๋ฅด๋Š” ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒฝ๊ณ„๋‹ค.

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋ฉด, ์•„์ง ๊ฐœ๋ฐœ๋˜์ง€ ์•Š์€ ๋ชจ๋“ˆ์˜ API๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๊ฒฝ๊ณ„๋ฅผ ๋งŒ๋‚  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿด ๋•, ๊ฐœ๋ฐœ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ๋ณด๋‹ค ์ž์ฒด์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค.

image

  • ์šฐ๋ฆฌ๊ฐ€ ๋ฐ”๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ „์ ์œผ๋กœ ํ†ต์ œํ•œ๋‹ค๋Š” ์žฅ์ ์ด ์ƒ๊ธด๋‹ค. โžก๏ธ Transmitter
  • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ–ˆ๊ธฐ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋Š” ๊น”๋”ํ•˜๊ฒŒ ์ž‘์„ฑ๊ฐ€๋Šฅํ•˜๋‹ค. โžก๏ธ Communication Controller
  • ํ•ด๋‹น ๋ชจ๋“ˆ์˜ API๊ฐ€ ๊ฐœ๋ฐœ๋œ ํ›„์—”, Adapter๋ฅผ ๊ตฌํ˜„ํ•ด ๊ฐ„๊ทน์„ ๋งค์šธ ์ˆ˜ ์žˆ๋‹ค. โžก๏ธ Transmitter Adapter
  • ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์œผ๋กœ API ์‚ฌ์šฉ์„ ์บก์Šํ™”ํ•ด API๊ฐ€ ๋ฐ”๋€” ๋•Œ ์ˆ˜์ •ํ•  ์ฝ”๋“œ๋ฅผ ํ•œ๊ณณ์— ๋ชจ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ ์ ˆํ•œ Fakeํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋ฉด, ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค. โžก๏ธ Fake Transmitter
  • ๋ชจ๋“ˆ API ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‚˜์˜จ ๋‹ค์Œ์—” ๊ฒฝ๊ณ„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ƒ์„ฑํ•ด API๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

์–ด๋Œ‘ํ„ฐ ํŒจํ„ด ๊ณต๋ถ€ ํ•„์š”

๊นจ๋—ํ•œ ๊ฒฝ๊ณ„

๊ฒฝ๊ณ„์—์„œ๋Š” ๋ณ€๊ฒฝ์ด ๋งŽ์ด ์ผ์–ด๋‚˜๋Š”๋ฐ, ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„๊ฐ€ ์šฐ์ˆ˜ํ•˜๋‹ค๋ฉด ๋ณ€๊ฒฝํ•˜๋Š”๋ฐ ์—„์ฒญ๋‚œ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ์š”๊ตฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ์œ„์™€๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๊ทœ์น™์„ ์ง€์ผœ๋ณด์ž.

1.๊ฒฝ๊ณ„์— ์œ„์น˜ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜์ž.

2.๊ธฐ๋Œ€์น˜๋ฅผ ์ •์˜ํ•˜๋Š” ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜์ž.

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

3.์™ธ๋ถ€ ํŒจํ‚ค์ง€๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ€๋Šฅํ•œ ์ค„์—ฌ ๊ฒฝ๊ณ„๋ฅผ ๊ด€๋ฆฌํ•˜์ž.

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

์–ด๋Š ๋ฐฉ๋ฒ•์ด๋“  ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง€๋ฉฐ, ๊ฒฝ๊ณ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๊ด€์„ฑ๋„ ๋†’์•„์ง€๊ณ , ์™ธ๋ถ€ ํŒจํ‚ค์ง€๊ฐ€ ๋ณ€ํ–ˆ์„ ๋•Œ ๋ณ€๊ฒฝํ•  ์ฝ”๋“œ๋„ ์ค„์–ด๋“ ๋‹ค.