μƒˆμ†Œμ‹

CleanCode

LightHouse에 이어 ν΄λ¦°μ½”λ“œλ₯Ό μ μš©ν•΄λ³΄μž

  • -
728x90

πŸ” ν΄λ¦°μ½”λ“œλ₯Ό μ‹œμž‘ν•˜κ²Œ 된 이유

 

이전에 ν¬μŠ€νŒ…ν–ˆλ˜ LightHouse μ‚¬μš© 이후 μ½”λ“œ κ°œμ„ λ„ ν•„μš”ν•˜λ‹€κ³  λŠκΌˆμŠ΅λ‹ˆλ‹€.

ν•™λΆ€μ‹œμ ˆ λΆ€ν„° 'ν΄λ¦°μ½”λ“œ' λΌλŠ” 말을 μ–΄κΉ¨ λ„ˆλ¨Έ 많이 λ“€μ—ˆμ—ˆλŠ”λ°μš”.

μ •μž‘ 주어진 과제 및 ν”„λ‘œμ νŠΈ κ΅¬ν˜„μ—λ§Œ κΈ‰κΈ‰ν–ˆλ˜ λ‚˜λ¨Έμ§€ 찾아보렀고 λ…Έλ ₯ν•˜μ§„ μ•Šμ•˜λ˜ 것 κ°™μŠ΅λ‹ˆλ‹€.

 

κ·ΈλŸ¬λ‹€

 

https://youtu.be/edWbHp_k_9Y 

[SLASH 21] μ‹€λ¬΄μ—μ„œ λ°”λ‘œμ“°λŠ” Frontend Clean Code : Toss μ§„μœ λ¦Ό 개발자

 

μ§„μœ λ¦Ό κ°œλ°œμžλ‹˜μ˜ 유투브 μ˜μƒμ„ 보고 μ• μ΄ˆμ— ν΄λ¦°μ½”λ“œ 자체λ₯Ό 잘 λͺ» μ΄ν•΄ν•˜κ³  μžˆμ—ˆλ‹€λŠ”κ±Έ μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

ν΄λ¦°μ½”λ“œλž€?

μ•„λ§ˆ μ €μ²˜λŸΌ ν΄λ¦°μ½”λ“œκ°€ κ·Έμ € 짧고 두 μ„Έλ²ˆ λ°˜λ³΅λ˜μ§€ μ•ŠλŠ” ν•¨μˆ˜ν˜• μ½”λ“œ μ •λ„λ‘œλ§Œ μ΄ν•΄ν•˜κ³  계신 μ‹ μž… 뢄듀이 λ§Žμ„ 것 κ°™μŠ΅λ‹ˆλ‹€. μ € λ˜ν•œ λ‹Ήμž₯ μ΅œκ·ΌκΉŒμ§€λ„ μ •ν™•νžˆ λͺ°λžμ—ˆκ±°λ“ μš”γ…Žγ…Ž.

 

μœ„ μ˜μƒμ˜ λ‚΄μš©μ„ κ°„λž΅ν•˜κ²Œ ν‘œν˜„ν•΄λ³΄λ©΄

ν΄λ¦°μ½”λ“œκ°€ 가진 μ˜μ˜λŠ” μœ μ§€λ³΄μˆ˜ μ‹œκ°„μ˜ 단좕 이라고 λ³Ό 수 μžˆλ‹€κ³  ν•©λ‹ˆλ‹€.

 

ν΄λ¦°μ½”λ“œκ°€ μ μš©λ˜μ§€ μ•Šμ€ μ½”λ“œλŠ” 주둜 1. νλ¦„νŒŒμ•…μ΄ μ–΄λ ΅κ³  2. 도메인 λ§₯락 νŒŒμ•…μ΄ μ•ˆλ˜λ©° 3. λ™λ£Œμ—κ²Œ λ¬Όμ–΄λ΄μ•Όλ§Œ μ•Œ 수 μžˆλŠ” μ½”λ“œ μž…λ‹ˆλ‹€.

λ”°λΌμ„œ ν΄λ¦°μ½”λ“œλŠ” λˆ„κ°€ 보더라도 λΆ€κ°€ μ„€λͺ…없이 λ™μž‘μ„ 이해할 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

κ°€λ Ή μ½”λ“œμ˜ 길이가 더 길어지더라도 λ§μ΄μ§€μš”!

 

이후 μ˜μƒμ—μ„œλŠ” μ›ν•˜λŠ” λ‘œμ§μ„ λΉ λ₯΄κ²Œ μ°ΎκΈ° μœ„ν•œ λͺ‡ 가지 κ°œλ…λ“€μ„ μ§šμ–΄μ€λ‹ˆλ‹€.

 

1. 응집도 2. 단일 μ±…μž„ 3. 좔상화 μž…λ‹ˆλ‹€.

 

μ €λŠ” 이 μ€‘μ—μ„œ λ¨Όμ € '응집도' 에 λŒ€ν•΄ 이야기 ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

μ‘μ§‘λ„λž€?

"ν•˜λ‚˜μ˜ λͺ©μ μ„ 가진 μ½”λ“œλ“€μ€ μ΅œλŒ€ν•œ 뭉쳐져 μžˆμ–΄μ•Ό ν•œλ‹€."

μ½”λ“œ λΈ”λ‘μ—μ„œ μ„œλ‘œ λΉ„μŠ·ν•œ 역할을 ν•˜λŠ” μ½”λ“œλ₯Ό κ°€κΉŒμ΄ 뢙이면 ν•΄λ‹Ή λ‘œμ§μ„ νŒŒμ•…ν•˜κΈ° μœ„ν•œ μ½”λ“œμ˜ 규λͺ¨κ°€ λˆˆμ— λ“€μ–΄μ˜€κ³  μœ μ§€λ³΄μˆ˜ν•˜κΈ° μ‰¬μ›Œμ§‘λ‹ˆλ‹€.

 

또 μ½”λ“œμ˜ ν•„μˆ˜μ μΈ 핡심 λΆ€λΆ„κ³Ό 세뢀적인 뢀뢄을 λ‚˜λˆ„μ–΄ 세뢀적인 뢀뢄은 ν•„μš”ν•˜λ‹€λ©΄ μ°Ύμ•„λ³Ό 수 있게 μˆ¨κΈ΄λ‹€λ©΄ μ½”λ“œμ˜ 가독성에 λ”μš± 도움이 λ©λ‹ˆλ‹€.

* νŠΉμ • μ½”λ“œ 블둝을 μˆ¨κΉ€μœΌλ‘œμ¨ μ½”λ“œλ₯Ό μ΄ν•΄ν•˜λŠ”λ° λ°©ν•΄κ°€ λœλ‹€λ©΄ 그것은 핡심 뢀뢄이라고 보아야 ν•©λ‹ˆλ‹€.

 

μ €λŠ” 이λ₯Ό 제 개인 포트폴리였 μ½”λ“œμ— μ μš©ν•΄ λ³΄μ•˜λŠ”λ°μš”.

 

ν΄λ¦­μ‹œ Modal μ‹€ν–‰

 

ν•΄λ‹Ή ν™”λ©΄μ˜ Cardλ₯Ό ν΄λ¦­ν•˜λ©΄ Modal이 μ‹€ν–‰λ˜κ²Œ λ˜λŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€.

 

μ €λŠ” ν•΄λ‹Ή λ‘œμ§μ„ κ΅¬ν˜„ν•˜λŠ” μ½”λ“œλ₯Ό μ•„λž˜μ™€ 같이 μž‘μ„±ν•΄λ³΄μ•˜λŠ”λ°μš”.

 

  const { modalShow, toggle } = useModalHook();

  return (
    <>
      <Modal
        modalShow={modalShow}
        toggle={toggle}
      ></Modal>

      <CardContainer onClick={toggle}>
    </>
 )

 

정말 κ°„λ‹¨ν•˜κ²Œ Modal을 On/Off ν•˜λŠ” ν•¨μˆ˜μ™€ On/Off μƒνƒœλ₯Ό 가진 λ³€μˆ˜λ§Œ μ»€μŠ€ν…€ 훅을 톡해 μˆ¨κ²ΌμŠ΅λ‹ˆλ‹€.

 

더 λ§Žμ€ κΈ°λŠ₯이 ν•„μš”ν•œ κ²½μš°μ—λ„ ν•΄λ‹Ή λ‘œμ§μ— 큰 핡심이 μ•„λ‹ˆλΌλ©΄ 숨길 수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€.

 

 

import { useState } from "react";

const useModalHook = () => {
  const [modalShow, setModalShow] = useState<boolean>(false);

  const toggle = () => {
    setModalShow(!modalShow);
  };

  return {
    modalShow,
    toggle,
  };
};

export default useModalHook;

μ΄λ ‡κ²Œ μ»€μŠ€ν…€ 훅을 μ΄μš©ν•΄ modalShow 와 toggle 의 μ„ΈλΆ€ μ½”λ“œλ₯Ό λͺ¨λ₯΄λ”라도 μΆ©λΆ„νžˆ λͺ¨λ‹¬μ˜ μƒνƒœλ₯Ό μ €μž₯ν•˜λŠ” 것과 κ·Έ μƒνƒœλ₯Ό λ³€κ²½ν•˜λŠ” ν•¨μˆ˜ λΌλŠ” 것을 인지할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ΄λŸ¬ν•œ 방식은 μ„ μ–Έν˜• ν”„λ‘œκ·Έλž˜λ°μ΄λΌκ³ λ„ ν•©λ‹ˆλ‹€. 이의 λ°˜λŒ€λ‘œλŠ” λͺ…λ Ήν˜• ν”„λ‘œκ·Έλž˜λ°μ΄ μžˆμŠ΅λ‹ˆλ‹€.

 

λ§ˆμ§€λ§‰μœΌλ‘œ μ•žμ„œ κΈ°μˆ ν•œ λ‚΄μš©μ²˜λŸΌ μ„ μ–Έν˜• ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œμ˜ 가독성과 μœ μ§€λ³΄μˆ˜ 및 μž¬μ‚¬μš©μ„±μ— μš©μ΄ν•˜λ‹€λŠ” 점이 μž₯점이 μžˆμ§€λ§Œ λ°˜λŒ€λ‘œ λ‘œμ§μ„ λ³€κ²½ν•˜κΈ° μœ„ν•΄μ„  μ—¬λŸ¬ λ ˆλ²¨μ„ μ˜€κ°€λ©° μˆ˜μ •ν•΄μ•Ό ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ ν˜„μž¬μ˜ 상황에 맞게 μœ λ™μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€κ³  ν•©λ‹ˆλ‹€.

 

Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.