CleanCode TIL (2022.01.31)

Henry ChoΒ·2022λ…„ 1μ›” 31일
0

λ…Έκ°œλΆ

λͺ©λ‘ 보기
11/31

DAY 11

πŸ”–Β μ˜€λŠ˜ 읽은 λ²”μœ„ : Mission#1


πŸ€“Β μ±…μ—μ„œ κΈ°μ–΅ν•˜κ³  싢은 λ‚΄μš©

쀑간 mission을 μœ„ν•œ 총정리

  • 쀑볡 쀄이기, ν‘œν˜„λ ₯ 높이기, μ΄ˆλ°˜λΆ€ν„° κ°„λ‹¨ν•œ 좔상화 κ³ λ €ν•˜κΈ° β†’ μ§„μ§œ λ¬Έμ œμ— μ‹ κ²½ μ“Έ μ—¬μœ  생김
  • 좔상적인 κ°œλ… ν•˜λ‚˜μ—λŠ” μΌκ΄€λœ 단어λ₯Ό 선택해 κ³ μˆ˜ν•˜λΌ
  • IDE의 μžλ™μ™„μ„±μ„ μƒκ°ν•΄μ„œλΌλ„ λΆˆν•„μš”ν•œ 접두사 λ‹€ λΆ™μ΄μ§€λ§μž
  • ν•¨μˆ˜μ—μ„œ λ“€μ—¬μ“°κΈ° μˆ˜μ€€μ€ 1λ‹¨μ΄λ‚˜ 2단을 λ„˜μ–΄μ„œλ©΄ μ•ˆλœλ‹€.
  • ν•œκ°€μ§€(μ§€μ •λœ ν•¨μˆ˜ 이름 μ•„λž˜μ—μ„œ 좔상화 μˆ˜μ€€μ΄ ν•˜λ‚˜μΈ λ‹¨κ³„λ§Œ μˆ˜ν–‰) 만 해라
  • ν•¨μˆ˜ μΈμˆ˜λŠ” 적을 수둝 μ’‹λ‹€.
  • λΆ€μˆ˜ 효과λ₯Ό μΌμœΌν‚€μ§€ 마라!
  • λͺ…λ Ήκ³Ό 쑰회λ₯Ό λΆ„λ¦¬ν•˜λΌ!
  • 였λ₯˜ μ½”λ“œλ³΄λ‹€ μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•˜λΌ!
  • 500쀄을 λ„˜μ§€μ•ŠλŠ” 평균 200μ€„μ˜ νŒŒμΌλ‘œλ„ μ»€λ‹€λž€ μ‹œμŠ€ν…œμ„ ꡬ좕할 수 μžˆλ‹€
  • μ‹ λ¬Έ κΈ°μ‚¬μ²˜λŸΌ μž‘μ„±ν•˜λΌ: 좔상화 β†’ 세뢀적, μœ μ‚¬κ°œλ…μ€ κ°€κΉŒμ΄

κ³ μΉ  μ½”λ“œ

const merry = document.querySelector(".js-clock");

function getClock() {
const christmas = new Date("2021, 12, 25");
const date = new Date();
const timeGap = christmas - date;

const xDay = Math.floor(timeGap / (1000 * 60 * 60 * 24));
const xHours = Math.floor(
(timeGap - xDay * 1000 * 60 * 60 * 24) / (1000 * 60 * 60)
);
const xMinutes = Math.floor((timeGap % (60 * 60 * 1000)) / (60 * 1000));
const xSeconds = Math.floor((timeGap % (60 * 1000)) / 1000);

const day = String(xDay).padStart(2, "0");
const hours = String(xHours).padStart(2, "0");
const minutes = String(xMinutes).padStart(2, "0");
const seconds = String(xSeconds).padStart(2, "0");

merry.innerText = `${day}d ${hours}h ${minutes}m ${seconds}s`;
}

getClock();
setInterval(getClock, 1000);

고친 μ½”λ“œ

const getThisChristmasDate = () => {
  const thisYear = new Date().getFullYear();
  return new Date(`${thisYear}, 12, 25`);
};

const getRemainingMillisecondTo = targetDate => targetDate - new Date();

const convertNumToZeroPaddedStr = sec => String(sec).padStart(2, "0");

const parseMillisecondTo = (millisecond, targetType) => {
  const secondFrom = {
    day: 60 * 60 * 24,
    hour: 60 * 60,
    min: 60,
  };
  const second = millisecond / 1000;
  let parsed = 0;
  switch (targetType) {
    case "day":
      parsed = second / secondFrom["day"];
      break;
    case "hour":
      parsed = (second % secondFrom["day"]) / secondFrom["hour"];
      break;
    case "minute":
      parsed = (second % secondFrom["hour"]) / secondFrom["min"];
      break;
    case "second":
      parsed = second % secondFrom["min"];
      break;
    default:
      throw "Wrong date type";
  }
  return convertNumToZeroPaddedStr(Math.floor(parsed));
};

const renderRemainingTimeToChristmas = element => {
  const thisChristmasDate = getThisChristmasDate();
  const remainingMillisecond = getRemainingMillisecondTo(thisChristmasDate);

  const day = parseMillisecondTo(remainingMillisecond, "day");
  const hour = parseMillisecondTo(remainingMillisecond, "hour");
  const minute = parseMillisecondTo(remainingMillisecond, "minute");
  const second = parseMillisecondTo(remainingMillisecond, "second");

  element.innerText = `${day}d ${hour}h ${minute}m ${second}s`;
};

const clock = document.querySelector(".js-clock");
setInterval(() => renderRemainingTimeToChristmas(clock), 1000);

πŸ€”Β λ– μ˜€λ₯΄λŠ” 생각

  • 책을 λ‚˜λ¦„ μ—΄μ‹¬νžˆ μ½μ—ˆλ‹€κ³  생각 ν–ˆμœΌλ‚˜ 적용이 잘 μ•ˆλŒ
  • 였히렀 μ½”λ“œκ°€ 더 길어진건.. μ—°μŠ΅μ΄λΌμ„œ κ·Έλ ‡λ‹€κ³  μžκΈ°μœ„μ•ˆμ„..?

πŸ”ŽΒ μ§ˆλ¬Έ

  • switchλ¬Έ 쓰지 말라고 ν–ˆλŠ”λ°.. 이런 λ‹¨μˆœν•œ κ²½μš°μ—λ„ μ“°λ©΄ 별둠가?

πŸ“Β μ†Œκ° 3쀄 μš”μ•½

  • κΎΈμ€€ν•œ μ‹€μ „ 적용 μ—°μŠ΅μ΄ ν•„μš”ν•˜κ² λ‹€.
  • 책에 λ‚˜μ˜¨ λ°©λ²•μ˜ μœ ν˜• λ³„λ‘œ λ‚˜λ§Œμ˜ μ—°μŠ΅ν•œ μ½”λ“œλ₯Ό λͺ¨μ•„ μ •λ¦¬ν•˜μž
  • 언어별 클린 μ½”λ“œ 적용 방식도 μ‘°κΈˆμ”© λ‹€λ₯Ό ν…Œλ‹ˆ 언어별 νŠΉμ„±λ„ κ³΅λΆ€ν•˜μž
profile
Full stack tech visionary

0개의 λŒ“κΈ€