CleanCode TIL (2022.01.25)

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

λ…Έκ°œλΆ

λͺ©λ‘ 보기
5/31

DAY 5

πŸ”–Β μ˜€λŠ˜ 읽은 λ²”μœ„ : 2μž₯ 의미 μžˆλŠ” 이름 (31~38p)


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

μžμ‹ μ˜ κΈ°μ–΅λ ₯을 μžλž‘ν•˜μ§€ 마라

  • μž‘μ€ λ£¨ν”„μ—μ„œ λ³€μˆ˜ i, j, kλŠ” πŸ™†β€β™‚οΈ, l 은 μ ˆλŒ€ ❌
  • λ˜‘λ˜‘ν•œ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λ˜‘λ˜‘ν•¨μ„ μžλž‘ν•˜κ³  μ‹Άμ–΄ν•˜μ§€λ§Œ μ „λ¬Έκ°€ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λͺ…λ£Œν•¨μ΄ μ΅œκ³ μž„μ„ μ•ˆλ‹€

클래슀 이름

  • λͺ…사, λͺ…사ꡬ μ‚¬μš©: Customer, WikiPage, Account, AddressParser
  • Manager, Processor, Data, info 등과같은 단어, λ™μ‚¬μ‚¬μš©βŒ

λ©”μ„œλ“œ 이름

  • λ™μ‚¬λ‚˜ 동사ꡬ: postPayment, deletePage, save
  • get + Accessor(μ ‘κ·Όμž), set + Mutator(λ³€κ²½μž), is + Predicate(쑰건자)
    string name = employee.getName();
    customer.setName("mike");
    if (paycheck.isPosted())...
  • Constructor(μƒμ„±μž) overload(μ€‘λ³΅μ •μ˜) μ‹œμ—λŠ” 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ μ‚¬μš©(인수λ₯Ό μ„€λͺ…ν•˜λŠ” 이름)
    Complex fulcrumPoint = Complex.FromRealNumber(23.0); πŸ™†β€β™‚οΈ
    Complex fulcrumPoint = new Complex(23.0); ❌

κΈ°λ°œν•œ 이름은 ν”Όν•˜λΌ

  • μž¬λ―Έλ‚œ 이름보닀 λͺ…λ£Œν•œ 이름을 선택 HolyhandGrenadeβŒΒ β†’ DeleteItems πŸ™†β€β™‚οΈ

ν•œ κ°œλ…μ— ν•œ 단어λ₯Ό μ‚¬μš©ν•˜λΌ

  • 좔상적인 κ°œλ… ν•˜λ‚˜μ—λŠ” μΌκ΄€λœ 단어λ₯Ό 선택해 κ³ μˆ˜ν•˜λΌ fetch = retrieve = get controller = manager = driver

말μž₯λ‚œμ„ ν•˜μ§€ 마라

  • 일관성을 지킀겠닀고 μ–΅μ§€λ‘œ λ™μΌν•œ 이름을 쓰지 마라

해법 μ˜μ—­μ—μ„œ κ°€μ Έμ˜¨ 이름을 μ‚¬μš©ν•˜λΌ

  • 기술적인 단어라도 λ…μž(λ™λ£Œ ν”„λ‘œκ·Έλž˜λ¨Έ)κ°€ ν•΄λ‹Ή 도메인에 μ΅μˆ™ν•˜λ‹€λ©΄ 적극 ν™œμš©ν•˜λΌ

문제 μ˜μ—­μ—μ„œ κ°€μ Έμ˜¨ 이름도 μ‚¬μš©ν•˜λΌ

  • μ μ ˆν•œ μ „λ¬Έ μš©μ–΄κ°€ μ—†λ‹€λ©΄ 문제 μ˜μ—­μ—μ„œ 이름을 κ°€μ Έμ˜¨λ‹€
  • 문제 μ˜μ—­ κ°œλ…κ³Ό 관련이 κΉŠμ€ μ½”λ“œλΌλ©΄, λΆ„μ•Ό μ „λ¬Έκ°€μ—κ²Œ 의미λ₯Ό λ¬Όμ–΄μ„œλΌλ„ 써도 λœλ‹€

의미 μžˆλŠ” λ§₯락을 μΆ”κ°€ν•˜λΌ

  • addrλΌλŠ” 접두어λ₯Ό μΆ”κ°€ν•΄ μ‚¬λžŒμ—κ²Œ λͺ…ν™•ν•œ λ§₯락 전달
  • AddressλΌλŠ” 클래슀λ₯Ό 생성해 μ»΄νŒŒμΌλŸ¬μ—κ²Œ λͺ…ν™•ν•œ λ§₯락 전달

λΆˆν•„μš”ν•œ λ§₯락을 없애라

  • IDE의 μžλ™μ™„μ„±μ„ μƒκ°ν•΄μ„œλΌλ„ λΆˆν•„μš”ν•œ 접두사 λ‹€ λΆ™μ΄μ§€λ§μž
  • μ˜λ―Έκ°€ λΆ„λͺ…ν•˜λ‹€λ©΄ 짧은 이름이 κΈ΄ 이름보닀 μ’‹λ‹€
  • accountAddress, customerAddress? 클래슀 μΈμŠ€ν„΄μŠ€λ‘œλŠ” μ’‹μ€μ΄λ¦„μ΄λ‚˜ 클래슀 이름은 Address둜 합쳐라

λ¦¬νŒ©ν„°λ§ 해라

  • 이름 λ°”κΎΈλŠ”κ²ƒμ„ λ‹€λ₯Έ κ°œλ°œμžκ°€ λ°˜λŒ€ν• κΉŒ λ‘λ €μ›Œ ν•˜μ§€ 말라
  • μ§ˆμ±…λ°›λŠ” κ²½μš°λ„ μžˆκ² μ§€λ§Œ 가독성이 높아지면 단기적, μž₯기적으둜 이읡이닀

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

  • μ»΄νŒŒμΌλŸ¬μ—κ²Œ λͺ…ν™•ν•œ λ§₯락을 μ£ΌκΈ°μœ„ν•΄ Classλ₯Ό μƒμ„±ν•œλ‹€λŠ” κ΅¬μ ˆμ€ μ§€κΈˆκΉŒμ§€ μ–΄λ–€ 책보닀 κ°€μž₯ 효과적으둜 객체지ν–₯의 μ˜λ―Έκ°€ 이해될 수 있게 ν•΄μ£Όμ—ˆλ‹€.

πŸ”ŽΒ μ§ˆλ¬Έ

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

  • μ˜ˆμœμ΄λ¦„μ€ μ‚¬λžŒμ—κ²Œ ν΄λž˜μŠ€λŠ” μ»΄νŒŒμΌλŸ¬μ—κ²Œ
  • 좔상적인 κ°œλ… ν•˜λ‚˜μ—λŠ” μΌκ΄€λœ 단어λ₯Ό 선택해 κ³ μˆ˜ν•˜λΌ
  • IDE의 μžλ™μ™„μ„±μ„ μƒκ°ν•΄μ„œλΌλ„ λΆˆν•„μš”ν•œ 접두사 λ‹€ λΆ™μ΄μ§€λ§μž
profile
Full stack tech visionary

0개의 λŒ“κΈ€