[πŸ“šλ…ν›„κ° ] Clean Code_6. 객체와 자료ꡬ쑰

호랭이·2022λ…„ 9μ›” 18일
0

πŸ“šλ…ν›„κ°

λͺ©λ‘ 보기
1/4

λŠλ‚€μ  λ¨Όμ €

좔상화에 λŒ€ν•œ 이야기, 그리고 객체지ν–₯ μ½”λ“œμ™€ μ ˆμ°¨μ§€ν–₯ μ½”λ“œμ˜ μž₯단점과 μ–΄λ–€ μƒν™©μ—μ„œ μ ν•©ν•œκ°€μ— λŒ€ν•œ λ‚΄μš©μ΄μ—ˆλ‹€.
λ””λ―Έν„° 법칙에 λŒ€ν•œ λΆ€λΆ„μ—μ„œλŠ” 'κΈ°μ°¨ 좩돌 μ½”λ“œ'λΌλŠ” 이야기가 λ‚˜μ™”λ‹€. λ©”μ†Œλ“œμ˜ 리턴값을 μ΄μš©ν•΄μ„œ 쀄쀄이 λ‹€λ₯Έ λ©”μ†Œλ“œμ˜ νŒŒλΌλ―Έν„°λ‘œ ν˜ΈμΆœν–ˆλ˜ λ‚˜μ˜ μ§€λ‚œ μ½”λ“œλ“€μ΄..μŠ€μ³μ§€λ‚˜κ°”λ‹€...
κΈ°μ°¨ 좩돌 μ½”λ“œλΌλ„ 리턴값이 객체인지 μžλ£Œκ΅¬μ‘°μΈμ§€μ— λ”°λΌμ„œ μœ„λ°˜ 여뢀도 λ‹¬λΌμ§€λŠ”λ°, λ‹€ν–‰νžˆ 졜근 μ½”λ”© μŠ€νƒ€μΌμ€ λ””λ―Έν„° 법칙을 μœ„λ°˜ν–ˆλ˜ 적이 거의 μ—†λ˜ 것 κ°™λ‹€.

κ·Έλ™μ•ˆ κ·Έλƒ₯ λŠλ‚Œμ μΈ λŠλ‚ŒμœΌλ‘œ 왠지 이 방법이 λ§žλŠ”κ±° κ°™μ•„...ν•˜λ©° μž‘μ„±ν–ˆλ˜ μ½”λ“œλ“€μ΄ μ™œ 더 깔끔해보이고 κ·Έλž˜μ•Ό ν•  κ²ƒλ§Œ κ°™μ•˜λŠ”μ§€(반μͺ½μ§œλ¦¬ 객체지ν–₯ 지식 λ•Œλ¬ΈμœΌλ‘œ μΆ”μ •) μ‘°κΈˆμ€ 이해가 κ°”λ‹€.
이유 μžˆλŠ” μ½”λ“œ, κ·Όκ±° 있고 기쀀이 μžˆλŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλ„λ‘ 도움이 될 것 같은 μ±•ν„°μ˜€λ‹€.


λ‚΄μš© μš”μ•½

κ°œλ°œμžκ°€ get, set ν•¨μˆ˜λ₯Ό publicν•˜κ²Œ μ„ μ–Έν•΄μ„œ private λ³€μˆ˜λ₯Ό 외뢀에 λ…ΈμΆœμ‹œν‚€λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ?

자료 좔상화

λ³€μˆ˜λ₯Ό privateν•˜κ²Œ μ„ μ–Έν•œλ‹€ ν•˜λ”λΌλ„ λ³€μˆ˜μ— μ ‘κ·Όν•  수 μžˆλŠ” get, set ν•¨μˆ˜λ₯Ό μ œκ³΅ν•œλ‹€λ©΄ κ΅¬ν˜„μ„ μ™ΈλΆ€λ‘œ λ…ΈμΆœν•˜λŠ” μ…ˆμ΄λ‹€.
λ³€μˆ˜μ— μ ‘κ·Όν•˜λŠ” ν•¨μˆ˜ 계측을 λ„£λŠ”λ‹€κ³  κ΅¬ν˜„μ΄ κ°μΆ”μ–΄μ§€λŠ” 것이 μ•„λ‹ˆλΌ, 좔상화가 ν•„μš”ν•˜λ‹€.
즉, 좔상 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•΄ κ΅¬ν˜„μ„ λͺ¨λ₯΄κ³ λ„ 자료의 핡심을 μ‘°μž‘ν•  수 μžˆμ–΄μ•Ό μ§„μ •ν•œ 의미의 클래슀인 것이닀.

자료/객체 λΉ„λŒ€μΉ­

μ ˆμ°¨μ§€ν–₯ μ½”λ“œμ™€ 객체 지ν–₯ μ½”λ“œλŠ” μ„œλ‘œ μƒλ°˜λ˜λŠ” 점이 μžˆλ‹€.
μ ˆμ°¨μ§€ν–₯ μ½”λ“œλŠ” 자료ꡬ쑰 λ³€κ²½ 없이 ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•˜κΈ° μš©μ΄ν•˜λ‹€. 반면, 객체지ν–₯ μ½”λ“œλŠ” κΈ°μ‘΄ ν•¨μˆ˜μ˜ λ³€κ²½ 없이 μƒˆ 클래슀λ₯Ό μΆ”κ°€ν•˜κΈ° 쉽닀.
λ˜ν•œ, μ ˆμ°¨μ§€ν–₯ μ½”λ“œλŠ” μƒˆλ‘œμš΄ 자료ꡬ쑰λ₯Ό μΆ”κ°€ν•˜λ €λ©΄ λͺ¨λ“  ν•¨μˆ˜λ₯Ό κ³ μ³μ•Όν•œλ‹€. 반면, 객체지ν–₯ μ½”λ“œλŠ” μƒˆλ‘œμš΄ ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•˜λ €λ©΄ 클래슀의 μˆ˜μ •μ΄ λΆˆκ°€ν”Όν•˜λ‹€.

λ””λ―Έν„° 법칙

λ””λ―Έν„°λ²•μΉ™μ΄λž€ λͺ¨λ“ˆμ€ μžμ‹ μ΄ μ‘°μž‘ν•˜λŠ” 객체의 λ‚΄λΆ€λ₯Ό λͺ°λΌμ•Ό ν•œλ‹€λŠ” 법칙이닀.
ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ„ μ΄μš©ν•΄μ„œ ν˜ΈμΆœν•œ ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ„ μ΄μš©ν•΄μ„œ ν•¨μˆ˜λ₯Ό 호좜......κ³Ό 같은 μ½”λ“œλ₯Ό κΈ°μ°¨ 좩돌이라고 λΆ€λ₯΄λŠ”데, 일반적으둜 μ‘°μž‘ν•˜λ‹€ μ—¬κ²¨μ§€λŠ” λ°©μ‹μ΄λ―€λ‘œ ν”Όν•˜λŠ” 편이 μ’‹λ‹€.
이런 κ²½μš°μ—μ„œ λ””λ―Έν„° 법칙을 μœ„λ°˜ν•˜λŠ”μ§€ μ—¬λΆ€λŠ” ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ΄ 객체인지 μžλ£Œκ΅¬μ‘°μΈμ§€μ— 달렸닀. 객체라면 λ‚΄λΆ€ ꡬ쑰λ₯Ό μˆ¨κ²¨μ•Όν•˜λ―€λ‘œ μœ„λ°˜μ΄κ³ , 자료ꡬ쑰라면 λ‚΄λΆ€ ꡬ쑰λ₯Ό λ…ΈμΆœν•˜λ―€λ‘œ λ””λ―Έν„° 법칙이 μ μš©λ˜μ§€ μ•ŠλŠ”λ‹€.
μžλ£Œκ΅¬μ‘°λŠ” ν•¨μˆ˜ 없이 public λ³€μˆ˜λ§Œ ν¬ν•¨ν•˜κ³ , κ°μ²΄λŠ” private λ³€μˆ˜μ™€ public ν•¨μˆ˜λ₯Ό ν¬ν•¨ν•œλ‹€λ©΄ ν˜Όλž€μ„ 쀄일 수 μžˆμ„ 것이닀.

κ²°λ‘ 

κ°μ²΄λŠ” λ™μž‘μ„ κ³΅κ°œν•˜κ³  자료λ₯Ό μˆ¨κΈ΄λ‹€. κ·Έλž˜μ„œ μƒˆ 객체 νƒ€μž…μ„ μΆ”κ°€ν•˜κΈ°λŠ” μ‰½μ§€λ§Œ μƒˆ λ™μž‘μ„ μΆ”κ°€ν•˜κΈ°λŠ” μ–΄λ ΅λ‹€.
μžλ£Œκ΅¬μ‘°λŠ” 별닀λ₯Έ λ™μž‘ 없이 자료λ₯Ό λ…ΈμΆœν•˜κΈ° λ•Œλ¬Έμ— μƒˆ λ™μž‘μ„ μΆ”κ°€ν•˜κΈ°λŠ” μ‰½μ§€λ§Œ κΈ°μ‘΄ ν•¨μˆ˜μ— μƒˆ 자료ꡬ쑰λ₯Ό μΆ”κ°€ν•˜κΈ° μ–΄λ ΅λ‹€.

μ–΄λ–€ μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•  λ•Œ, μƒˆ 자료 νƒ€μž…μ„ μΆ”κ°€ν•  κ°€λŠ₯성이 λ†’λ‹€λ©΄ 객체가 더 μ ν•©ν•˜κ³ , μƒˆλ‘œμš΄ λ™μž‘μ„ μΆ”κ°€ν•  κ°€λŠ₯성이 λ†’λ‹€λ©΄ μžλ£Œκ΅¬μ‘°μ™€ μ ˆμ°¨μ§€ν–₯적 μ½”λ“œκ°€ 더 μ ν•©ν•˜λ‹€.

profile
삐약

0개의 λŒ“κΈ€