CleanCode TIL (2022.02.21)

Henry Choยท2022๋…„ 2์›” 21์ผ
0

๋…ธ๊ฐœ๋ถ

๋ชฉ๋ก ๋ณด๊ธฐ
27/31

DAY 29

๐Ÿ”–ย ์˜ค๋Š˜ ์ฝ์€ ๋ฒ”์œ„ : 14. ์ ์ง„์ ์ธ ๊ฐœ์„ (270~295p)


๐Ÿค“ย ์ฑ…์—์„œ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ

String ์ธ์ˆ˜

  • ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๊ณ ์น˜๋ฉด์„œ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰, ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ• ์‹œ ์ˆ˜์ • ํ›„ ์ง„ํ–‰
  • ๊ฐ ์ธ์ˆ˜ ์œ ํ˜•์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ArgumentMarchaler ํด๋ž˜์Šค์— ๋„ฃ๊ณ  ๋‚˜์„œ ArgumentMarshaler ํŒŒ์ƒ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌ โ†’ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ๋ฅผ ์กฐ๊ธˆ์”ฉ ๋ณ€๊ฒฝํ•˜๋Š” ๋™์•ˆ์—๋„ ์‹œ์Šคํ…œ์˜ ์ •์ƒ ๋™์ž‘์„ ์œ ์ง€ํ•˜๊ธฐ ์‰ฌ์›€
    • ์ถ”์ƒ ๋ฉ”์„œ๋“œ set์„ ๋งŒ๋“ฌ

      private abstract class ArgumentMarshaler {
          protected boolean booleanValue = false;
          private String stringValue;
          private int integerValue;
          public void setBoolean(boolean value) {
              booleanValue = value;
          }
          public boolean getBoolean() {
              return booleanValue;
          }
          public void setString(String s) {
              stringValue = s;
          }
          public String getString() {
              return stringValue == null ? "" : stringValue;
          }
          public void setInteger(int i) {
              integerValue = i;
          }
          public int getInteger() {
              return integerValue;
          }
          public abstract void set(String s);
      }
    • BooleanArgumentMarshaler ํด๋ž˜์Šค์— set ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„

      private class BooleanArgumentMarshaler extends ArgumentMarshaler {
          public void set(String s) {
              booleanValue = true;
          }
      }
    • setBoolean ํ˜ธ์ถœ์„ setํ˜ธ์ถœ๋กœ ๋ฐ”๊ฟˆ

      private void setBooleanArg(char argChar, boolean value) {
          booleanArgs.get(argChar).set("true");
      }
    • set ๊ธฐ๋Šฅ์„ BooleanArgumentMarshaler ๋กœ ์˜ฎ๊ฒป์œผ๋ฏ€๋กœ BooleanArgumentMarshaler.setBoolean ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ฑฐ

  • ์ปดํŒŒ์ผ์„ ์œ„ํ•ด get ์ถ”์ƒ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฒ˜์Œ์— ๋‚˜์˜ค๋Š” ์ธ์ˆ˜ ์œ ํ˜•๋ณ„ ๋งต ์„ธ ๊ฐœ ์—†์•ฐ โ†’ ArgumentMarshaler๋กœ ๋งต ๋ณ€๊ฒฝ
  • ์—ฌ์ „ํžˆ ์ง€์ €๋ถ„ โ†’ args ๋ฐฐ์—ด์„ list๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ Iterator๋ฅผ set ํ•จ์ˆ˜๋กœ ์ „๋‹ฌ

๐Ÿค”ย ๋– ์˜ค๋ฅด๋Š” ์ƒ๊ฐ

  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋Š” 2ํšŒ๋…์œผ๋กœ ๋ฏธ๋ฃฌ๋‹ค. ๋‹ค์Œ์€ ์˜ค์ง€ ์•Š๋Š”๋‹ค๊ณ ํ–ˆ๋Š”๋ฐ..

๐Ÿ”Žย ์งˆ๋ฌธ

๐Ÿ“ย ์†Œ๊ฐ 3์ค„ ์š”์•ฝ

  • ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๊ณ ์น˜๋ฉด์„œ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰, ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ• ์‹œ ์ˆ˜์ • ํ›„ ์ง„ํ–‰
  • ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์— ์ˆ˜์ •ํ•  ๋‚ด์šฉ์„ ๋ชจ๋‘ ๋„ฃ๊ณ  ๋ถ„๋ฆฌํ•˜๋Š” ์‹์œผ๋กœ ํ•˜์—ฌ ๊ธฐ์กด ์‹œ์Šคํ…œ ์šด์˜์„ ์œ ์ง€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค
  • ์ธ์ˆ˜๊ฐœ์ˆ˜๋ฅผ ์ตœ์†Œํ™” ํ•˜๊ธฐ์œ„ํ•ด args๋ฐฐ์—ด์„ list๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ setํ•จ์ˆ˜๋กœ ์ „๋‹ฌ
profile
Full stack tech visionary

0๊ฐœ์˜ ๋Œ“๊ธ€