ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • πŸ“šλ…Έλ§ˆλ“œ 개발자 뢁클럽 'μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨Έ'(1κΈ°) 과제#3
    πŸ“š IT λ„μ„œ 2022. 3. 21. 23:14

    πŸ“Œ ASSIGNMENT 3. 22.03.20 SUN - 03.21 MON

     

    πŸ“Ž μ˜€λŠ˜ TIL 3쀄 μš”μ•½

    • DRY - λͺ¨λ“  지식은 μ‹œμŠ€ν…œ λ‚΄μ—μ„œ 단 ν•œ 번만, μ• λ§€ν•˜μ§€ μ•Šκ³ , κΆŒμœ„ 있게 ν‘œν˜„λ˜μ–΄μ•Ό ν•œλ‹€.
    • 직ꡐ성 - ν•˜λ‚˜κ°€ λ°”λ€Œμ–΄λ„ λ‚˜λ¨Έμ§€μ— μ–΄λ–€ 영ν–₯을 주지 μ•ŠλŠ” 것. '독립성', '결합도 쀄이기'
    • ν…ŒμŠ€νŠΈλŠ” 개발의 ν•œ 뢀뢄이닀.

     

    πŸ”– μ˜€λŠ˜ 읽은 λ²”μœ„

    2μž₯. μ‹€μš©μ£Όμ˜ 접근법

     

     

    πŸ– μ±…μ—μ„œ κΈ°μ–΅ν•˜κ³  싢은 λ‚΄μš©μ„ μ¨λ³΄μ„Έμš”

    • ETC(Easier to Change) - "λ°”κΎΈκΈ° 더 μ‰½κ²Œ"
      • 잘 μ„€κ³„λœ μ½”λ“œλŠ” λ°”λ€œμœΌλ‘œμ¨ μ‚¬μš©ν•˜λŠ” μ‚¬λžŒμ—κ²Œ λ§žμΆ°μ Έμ•Ό ν•œλ‹€.
    • μ‚¬λžŒλ“€μ€ λŒ€λΆ€λΆ„ μœ μ§€ λ³΄μˆ˜λž€ 버그λ₯Ό 고치고 κΈ°λŠ₯을 κ°œμ„ ν•˜λŠ” 것을 μ˜λ―Έν•˜κΈ° λ•Œλ¬Έμ—, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μΆœμ‹œλ˜μ—ˆμ„ λ•Œ λΉ„λ‘œμ†Œ μœ μ§€ λ³΄μˆ˜κ°€ μ‹œμž‘λœλ‹€κ³  λ―ΏλŠ”λ‹€. μš°λ¦¬λŠ” 이듀이 ν‹€λ Έλ‹€κ³  μƒκ°ν•œλ‹€. ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” 늘 μœ μ§€ 보수 λͺ¨λ“œμ— μžˆλ‹€. 우리의 μ΄ν•΄λŠ” λ‚ λ§ˆλ‹€ 바뀐닀. μš°λ¦¬κ°€ ν”„λ‘œμ νŠΈμ— 열쀑해 μžˆλŠ” λ™μ•ˆμ—λ„ μƒˆλ‘œμš΄ μš”κ΅¬ 사항이 λ„μ°©ν•˜κ³  κΈ°μ‘΄ μš”κ΅¬ 사항은 μ§„ν™”ν•œλ‹€. μ–΄μ©Œλ©΄ ν™˜κ²½μ΄ λ³€ν•  μˆ˜λ„ μžˆλ‹€. μ΄μœ κ°€ 무엇이건, μœ μ§€ λ³΄μˆ˜λŠ” λ³„κ°œμ˜ ν™œλ™μ΄ μ•„λ‹ˆλ©° 전체 개발 κ³Όμ •μ˜ 일상적인 뢀뢄이닀.
    • DRY(Don't Repeat Yourself)
      • λͺ¨λ“  지식은 μ‹œμŠ€ν…œ λ‚΄μ—μ„œ 단 ν•œ 번만, μ• λ§€ν•˜μ§€ μ•Šκ³ , κΆŒμœ„ 있게 ν‘œν˜„λ˜μ–΄μ•Ό ν•œλ‹€.
      • DRYλŠ” μ§€μ‹μ˜ 쀑볡, μ˜λ„μ˜ 쀑볡에 λŒ€ν•œ 것이닀. λ˜‘κ°™μ€ κ°œλ…μ„ λ‹€λ₯Έ κ³³ λ‘κ΅°λ°μ—μ„œ ν‘œν˜„ν•˜λ©΄ μ•ˆ λœλ‹€λŠ” 것이닀.
      • μ½”λ“œλŠ” λ™μΌν•˜μ§€λ§Œ 두 ν•¨μˆ˜κ°€ ν‘œν˜„ν•˜λŠ” 지식은 λ‹€λ₯΄λ‹€. 두 ν•¨μˆ˜λŠ” 각각 μ„œλ‘œ λ‹€λ₯Έ 것을 κ²€μ¦ν•˜κ³  μžˆμ§€λ§Œ, μš°μ—°νžˆ κ·œμΉ™μ΄ 같은 것뿐이닀. 이것은 μš°μ—°μ΄μ§€ 쀑볡이 μ•„λ‹ˆλ‹€.
    • λͺ¨λ“ˆμ΄ 자료 ꡬ쑰λ₯Ό λ…ΈμΆœν•˜λ©΄ μ–Έμ œλ‚˜ λͺ¨λ“ˆμ˜ κ΅¬ν˜„κ³Ό κ·Έ 자료 ꡬ쑰λ₯Ό μ‚¬μš©ν•˜λŠ” μ½”λ“œ 사이에 결합이 생긴닀. κ°€λŠ₯ν•˜λ‹€λ©΄ μ–Έμ œλ‚˜ 객체의 속성을 읽고 μ“Έ λ•Œ μ ‘κ·Όμž(accessor) ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λΌ. 그러면 λ‚˜μ€‘μ— κΈ°λŠ₯을 μΆ”κ°€ν•˜κΈ° 더 μ‰¬μ›Œμ§ˆ 것이닀.
    • μ½”λ“œμ—μ„œ μ™ΈλΆ€ 데이터λ₯Ό κ³ μ •λœ ꡬ쑰(예λ₯Ό λ“€μ–΄ κ΅¬μ‘°μ²΄λ‚˜ 클래슀의 μΈμŠ€ν„΄μŠ€)둜 ν‘œν˜„ν•˜λŠ” λŒ€μ‹ , κ·Έλƒ₯ ν‚€-κ°’ 데이터 ꡬ쑰에 λ°€μ–΄ λ„£λŠ” 것이닀. 이 방식을 μ“Έ λ•ŒλŠ” 데이터λ₯Ό ν•œ κ²Ή 더 κ°μŒ€ 것을 ꢌμž₯ν•œλ‹€.
    • μΌμƒμ μœΌλ‘œλ“  μ½”λ“œ 리뷰λ₯Ό ν†΅ν•΄μ„œλ“  λ‹€λ₯Έ μ‚¬λžŒμ˜ μ†ŒμŠ€ μ½”λ“œμ™€ λ¬Έμ„œλ₯Ό λ°˜λ“œμ‹œ 읽어라. λ‹€λ₯Έ μ‚¬λžŒμ˜ 것을 κΈ°μ›ƒκ±°λ¦¬λŠ” 게 μ•„λ‹ˆκ³ , κ±°κΈ°μ„œ λ°°μš°λŠ” 것이닀. 그리고 κΈ°μ–΅ν•˜λΌ. 접근은 μƒν˜Έμ μ΄λ‹€. λ‹€λ₯Έ μ‚¬λžŒμ΄ μ—¬λŸ¬λΆ„μ˜ μ½”λ“œλ₯Ό 듀여닀보고 κ±΄λ“œλ¦°λ‹€κ³  ν•΄μ„œ κΈ°λΆ„ λ‚˜λΉ ν•˜μ§€ 말 일이닀.
    • 직ꡐ성(orthogonality)
      • κΈ°ν•˜ν•™ : κ·Έλž˜ν”„μ˜ 두 직선이 직각으둜 λ§Œλ‚˜λŠ” 경우 μ§κ΅ν•œλ‹€κ³  말함. 이 λ•Œ 두 개의 선은 독립적(independent)
      • 컴퓨터 κ³Όν•™ : μΌμ’…μ˜ 독립성, 결합도 쀄이기(decoupling)λ₯Ό 의미. ν•˜λ‚˜κ°€ λ°”λ€Œμ–΄λ„ λ‚˜λ¨Έμ§€μ— μ–΄λ–€ 영ν–₯도 주지 μ•ŠμœΌλ©΄ μ„œλ‘œ μ§κ΅ν•œλ‹€κ³  ν•  수 있음.
      • 두 μ»΄ν¬λ„ŒνŠΈκ°€ 직ꡐ적이라면 κ²°ν•©ν–ˆμ„ λ•Œ 결과물은 M x N가지 일이닀. 두 개의 μ»΄ν¬λ„ŒνŠΈκ°€ 직ꡐ적이지 μ•Šλ‹€λ©΄ κ²ΉμΉ˜λŠ” 뢀뢄이 μžˆμ„ν…Œκ³ , 결과물이 ν•  수 μžˆλŠ” 일은 그보닀 적을 것이닀. 직ꡐ적인 μ»΄ν¬λ„ŒνŠΈλ“€μ„ κ²°ν•©ν•¨μœΌλ‘œμ¨ λ‹¨μœ„ λ…Έλ ₯λ‹Ή 더 λ§Žμ€ κΈ°λŠ₯을 얻을 수 μžˆλ‹€.
      • '직ꡐ적'μ΄λΌλŠ” κ°œλ…μ„ μ„€λͺ…ν•  λ•Œ λͺ¨λ“ˆμ‹, μ»΄ν¬λ„ŒνŠΈ 기반, 계측(layer) 같은 μš©μ–΄λ₯Ό μ‚¬μš©ν•˜κΈ°λ„ ν•œλ‹€. μ‹œμŠ€ν…œμ€ μ„œλ‘œ ν˜‘λ ₯ν•˜λŠ” λͺ¨λ“ˆμ˜ μ§‘ν•©μœΌλ‘œ κ΅¬μ„±λ˜μ–΄μ•Ό ν•˜κ³ , 각 λͺ¨λ“ˆμ€ λ‹€λ₯Έ λΆ€λΆ„κ³Ό 독립적인 κΈ°λŠ₯을 κ΅¬ν˜„ν•΄μ•Ό ν•œλ‹€. 계측 κ΅¬μ‘°λŠ” 직ꡐ적 μ‹œμŠ€ν…œμ„ μ„€κ³„ν•˜λŠ” κ°•λ ₯ν•œ 방법이닀.
      • λ§Œμ•½ 객체λ₯Ό μ €μž₯μ†Œμ— μ €μž₯ν•˜λŠ” 방식이 투λͺ…ν•˜λ‹€λ©΄ 직ꡐ적이닀. ν•˜μ§€λ§Œ νŠΉλ³„ν•œ λ°©μ‹μœΌλ‘œ 객체λ₯Ό μƒμ„±ν•˜κ³  μ ‘κ·Όν•΄μ•Ό ν•œλ‹€λ©΄ 그렇지 μ•Šλ‹€.
    • 응집(cohesion)
      • μ»΄ν¬λ„ŒνŠΈλ“€μ΄ 각기 격리(isolate)λ˜μ–΄ 있으면 μ–΄λŠ ν•˜λ‚˜λ₯Ό λ°”κΏ€ λ•Œ λ‚˜λ¨Έμ§€ 것듀을 κ±±μ •ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.
      • 생산성 ν–₯상, 리슀크 κ°μ†Œ
    • "μžμ‹ μ˜ 힘으둜 μ œμ–΄ν•  수 μ—†λŠ” 속성에 μ˜μ‘΄ν•˜μ§€ 말라."
    • κΈ°νšŒκ°€ μžˆμ„ λ•Œλ§ˆλ‹€ μ½”λ“œμ˜ ꡬ쑰와 직ꡐ성을 κ°œμ„ ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν•˜λΌ. 이런 과정을 'λ¦¬νŒ©ν„°λ§(refactoring)'이라고 λΆ€λ₯Έλ‹€.
    • λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λŠ” ν–‰μœ„ μžμ²΄κ°€ 직ꡐ성을 ν…ŒμŠ€νŠΈν•΄ λ³Ό 수 μžˆλŠ” κΈ°νšŒλ‹€. λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ μ–΄λ–€ μž‘μ—…μ΄ ν•„μš”ν•˜κ±°λ‚˜ 상당 뢀뢄을 λΆˆλŸ¬μ™€μ•Ό ν•œλ‹€λ©΄ λͺ¨λ“ˆκ³Ό λ‚˜λ¨Έλ‹ˆ μ‹œμŠ€ν…œ μ‚¬μ΄μ˜ 결합도λ₯Ό μΆ©λΆ„νžˆ 쀄이지 λͺ»ν–ˆλ‹€λŠ” λœ»μ΄λ‹€.
    • ν…ŒμŠ€νŠΈλ₯Ό 마친 λ’€ μ½”λ“œλ₯Ό 병합할 λ•Œ 버그 μˆ˜μ •μ— λŒ€ν•œ νƒœκ·Έλ₯Ό 뢙여라. μ΄λ ‡κ²Œ ν•˜λ©΄ 버그 μˆ˜μ •λ§ˆλ‹€ μˆ˜μ •ν•œ μ†ŒμŠ€ 파일 개수λ₯Ό μˆ˜μ§‘ν•˜μ—¬ κ·Έ κ²½ν–₯을 λΆ„μ„ν•œ μ›” λ‹¨μœ„ 리포트λ₯Ό λ§Œλ“€ 수 μžˆμ„ 것이닀.
    • "당신이 가진 생각이 λ”± ν•˜λ‚˜λ°–μ— μ—†λ‹€λ©΄, κ·Έκ²ƒλ§ŒνΌ μœ„ν—˜ν•œ 것은 μ—†λ‹€." - 에밀 μ˜€κ·€μŠ€νŠΈ 샀λ₯΄ν‹°μ—
    • λ°μ΄ν„°λ² μ΄μŠ€λΌλŠ” κ°œλ…μ„ μ˜¬λ°”λ₯΄κ²Œ μΆ”μƒν™”ν•˜μ—¬ μ˜μ†μ„±μ„ ν•˜λ‚˜μ˜ μ„œλΉ„μŠ€λ‘œ μ œκ³΅ν•˜λ„λ‘ λ§Œλ“€μ—ˆλ‹€λ©΄ λ‹¬λ¦¬λŠ” 도쀑에 말을 κ°ˆμ•„νƒˆ 수 μžˆλŠ” μœ μ—°μ„±μ΄ 생길 것이닀.
    • μ˜ˆκ΄‘νƒ„ 개발
      • μ‹œμŠ€ν…œμ„ μ •μ˜ν•˜λŠ” μ€‘μš”ν•œ μš”κ΅¬ 사항을 찾아라. 의문이 λ“œλŠ” λΆ€λΆ„μ΄λ‚˜ κ°€μž₯ μœ„ν—˜μ΄ 컀 λ³΄μ΄λŠ” 곳을 찾아라. 이런 λΆ€λΆ„μ˜ μ½”λ“œλ₯Ό κ°€μž₯ λ¨Όμ € μž‘μ„±ν•˜λ„λ‘ 개발 μš°μ„ μˆœμœ„λ₯Ό μ •ν•˜λΌ.
      • κΈ°λŠ₯은 λ³„λ‘œ μ—†μ§€λ§Œ μ™„κ²°λœ μ½”λ“œ, μ΅œμ’… μ‹œμŠ€ν…œ 골격 쀑 일뢀가 됨
    • ν”„λ‘œν† νƒ€μž…
      • μ΅œμ’… μ‹œμŠ€ν…œμ˜ μ–΄λ–€ 츑면을 탐사해 λ³΄λŠ” 것이 λͺ©ν‘œ
      • ν”„λ‘œν† νƒ€μ΄ν•‘μ΄ λλ‚˜λ©΄ ν•΄λ‹Ή μ½”λ“œλŠ” 폐기, μ˜ˆκ΄‘νƒ„μ„ λ°œμ‚¬ν•˜κΈ° 전에 λ¨Όμ € μˆ˜ν–‰ν•˜λŠ” μ •μ°°μ΄λ‚˜ 정보 μˆ˜μ§‘κ³Ό 같은 것
    • μ„ΈλΆ€ 사항을 포기할 수 μ—†λŠ” ν™˜κ²½μ— μ²˜ν•΄ μžˆλ‹€λ©΄ μ§„μ§œλ‘œ ν”„λ‘œν† νƒ€μž…μ„ λ§Œλ“€κ³  μžˆλŠ” 게 λ§žλŠ”μ§€ μžλ¬Έν•΄ 보라. μ•„λ§ˆλ„ 이런 κ²½μš°μ—λŠ” μ˜ˆκ΄‘νƒ„ λ°©μ‹μ˜ 개발이 더 μ μ ˆν•  것이닀. 

     

    πŸ’¬ 였늘 μ†Œκ°μ€? λ– μ˜€λ₯΄λŠ” μ†Œκ°μ„ κ°„λ‹¨ν•˜κ²Œ μ μ–΄λ³΄μ„Έμš”

    2μž₯을 μ½μœΌλ©΄μ„œ μ²˜μŒλΆ€ν„° λκΉŒμ§€ 계속 λ– μ˜€λ₯΄λŠ” 생각은 λ‚˜λŠ” 아직 슀슀둜λ₯Ό 개발자라고 μΉ­ν•˜λ©΄ μ•ˆλ˜κ² λ‹€λŠ” κ²ƒμ΄μ—ˆλ‹€. 퇴사 μ§μ „κΉŒμ§€ 보고 κ°œλ°œν•˜λ˜ μ½”λ“œλ“€μ΄ λ„ˆλ¬΄λ‚˜ λ‚œμž‘ν–ˆκ³  κ·Έ μ½”λ“œλ“€μ„ 더 λ‚˜μ€ λ°©ν–₯으둜 λ°”κΏ”λ³Ό 생각쑰차 ν•˜μ§€ μ•Šμ•˜λ˜ λ‚˜λŠ”... κ°œλ°œμžκ°€ μ•„λ‹ˆλ‹€πŸ™ μ²« μ·¨μ—… 전에 이 책을 μ½μ—ˆλ”λΌλ©΄ μŠ€μŠ€λ‘œμ—κ²Œ 쑰금 더 λ–³λ–³ν•œ κ°œλ°œμžκ°€ λ˜μ§€ μ•Šμ•˜μ„κΉŒ μ•½κ°„μ˜ ν›„νšŒκ°€ κΉƒλ“ λ‹€. 

    μ •μ²˜κΈ° κ³΅λΆ€ν•˜λ©΄μ„œ 정말 μ• λ§€ν–ˆλ˜ κ°œλ…λ“€μ΄ 결합도, μ‘μ§‘λ„μ˜€λŠ”λ° κ·Έ κ°œλ…λ“€μ„ μ—¬κΈ°μ„œ λ‹€μ‹œ 보게 되고 μ’€ 더 μžμ„Έν•œ μ„€λͺ…을 μ½μœΌλ‹ˆ λ‚˜ν•œν…Œ μŠ€λ©°λ“œλŠ” λŠλ‚Œμ΄λ‹€.

    아직 μ±…μ˜ μ΄ˆλ°˜λΆ€μ΄κΈ΄ ν•˜μ§€λ§Œ λ‹€ 읽고 λ‚˜λ©΄ λ‚΄ κ°œλ°œμΈμƒμ˜ 뢁극성이 μƒκ²¨μžˆμ„ 것 κ°™λ‹€. 이 μ˜³μ€ λ°©ν–₯을 κΎΈμ€€νžˆ μ—°κ΅¬ν•˜κ³  따라가기!

     

    πŸ“ κΆκΈˆν•œ λ‚΄μš©μ΄ μžˆκ±°λ‚˜, 잘 μ΄ν•΄λ˜μ§€ μ•ŠλŠ” λ‚΄μš©μ΄ μžˆλ‹€λ©΄ μ μ–΄λ³΄μ„Έμš”

    λŒ“κΈ€

Designed by Tistory.