Refactoring

Compose Method Pattern

ν•¨μˆ˜μ˜ μ˜λ„κ°€ 잘 λ“œλŸ¬λ‚˜λ„λ‘ λ™λ“±ν•œ μˆ˜μ€€μ˜ μž‘μ—…μ„ ν•˜λŠ” μ—¬λŸ¬ λ‹¨κ³„λ‘œ λ‚˜λˆˆλ‹€.

μ΄λŠ” ν•¨μˆ˜κ°€ ν•˜λ‚˜μ˜ λ™μž‘λ§Œ ν•  수 있게 μž¬κ΅¬μ„± ν•˜λŠ”κ²ƒμ΄λ‹€.

  • κΈ°λŠ₯을 μž‘κ²Œ λ‚˜λˆˆλ‹€.
  • λ―Έμ‚¬μš© μ½”λ“œ ν˜Ήμ€ 쀑볡 μ½”λ“œλ₯Ό μ œκ±°ν•œλ‹€.
  • μ½”λ“œμ˜ μ˜λ„κ°€ 잘 λ“œλŸ¬λ‚˜λ„λ‘ μ„€κ³„ν•œλ‹€.
  • κΈ°λŠ₯을 λ‹¨μˆœν™” ν•œλ‹€.
  • λ©”μ„œλ“œλ₯Ό λ™λ“±ν•œ μˆ˜μ€€μœΌλ‘œ 단계λ₯Ό λ‚˜λˆˆλ‹€.

일급 μ»¬λ ‰μ…˜ (First Class Collection)

  • μ½œλ ‰μ…˜μ„ ν¬ν•¨ν•œ ν΄λž˜μŠ€λŠ” λ°˜λ“œμ‹œ λ‹€λ₯Έ λ©€λ²„λ³€μˆ˜κ°€ μ—†μ–΄μ•Ό ν•œλ‹€.
Map<String, String> map = new HashMap<>();
map.put("1", "A");
map.put("2", "B");
map.put("3", "C");

μœ„ μ½”λ“œλ₯Ό μ•„λž˜μ™€ 같이 Wrapping ν•˜λŠ”κ²ƒμ΄λ‹€.

public class GameRanking {
  private Map<String, String> ranks;

  public GameRanking(Map<String, String> ranks) {
    this.ranks = ranks;
  }
}

Collection을 Wrapping ν•˜λ©΄μ„œ κ·Έ μ™Έ λ‹€λ₯Έ 멀버 λ³€μˆ˜κ°€ μ—†λŠ” μƒνƒœλ₯Ό 일급 μ»¬λ ‰μ…˜μ΄λΌ ν•œλ‹€.

μ•„λž˜ μ½”λ“œμ™€ 같이 λ°”κΎΈλ©΄ λ‹€μŒκ³Ό 같은 이점이 생긴닀

  • λΉ„μ§€λ‹ˆμŠ€μ— 쒅속적인 자료ꡬ쑰
  • Collection 의 λΆˆλ³€μ„±μ„ 보μž₯
  • μƒνƒœμ™€ ν–‰μœ„λ₯Ό ν•œ κ³³μ—μ„œ 관리
  • 이름이 μžˆλŠ” μ»¬λ ‰μ…˜

참고자료

https://jojoldu.tistory.com/412

객체지ν–₯μƒν™œμ²΄μ‘°

μ†ŒνŠΈμ›μŠ€ μ•€μ†”λŸ¬μ§€

  1. ν•˜λ‚˜μ˜ λ©”μ„œλ“œμ— ν•œλ‹¨κ³„μ˜ λ“€μ—¬μ“°κΈ°λ§Œ ν—ˆμš©ν•œλ‹€.
  2. else μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
  3. λͺ¨λ“  μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν•œλ‹€.
  4. ν•œμ€„μ— 점 ν•˜λ‚˜λ§Œ μ°λŠ”λ‹€.
  5. 쀄여쓰지 μ•ŠλŠ”λ‹€.
  6. λͺ¨λ“  μ—”ν‹°ν‹°λ₯Ό μž‘κ²Œ μœ μ§€ν•œλ‹€.
  7. 2개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό 가진 클래슀λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
  8. 일급 μ»¬λ ‰μ…˜μ„ μ‚¬μš©ν•œλ‹€.
  9. getter / setter / property 을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

참고자료

https://elaia.tistory.com/3