Skip to content

0224LJH/java-lotto-7

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

59 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎰 java-lotto 🎰


πŸ“š λͺ©μ°¨

  1. πŸ“” νŒ¨ν‚€μ§€ ꡬ쑰
  2. πŸ—Ί ν”„λ‘œκ·Έλž¨ ν”Œλ‘œμš° 및 κ΅¬ν˜„ κΈ°λŠ₯
  3. ❓ ν…ŒμŠ€νŠΈ λͺ©λ‘
  4. πŸ” κ³ λ―Όν–ˆλ˜ μš”μ†Œ
  5. ⭐ 섀계 μ‹œ μ£Όμš” 포인트

πŸ“” νŒ¨ν‚€μ§€ ꡬ쑰

Package Class Description
βš™οΈΒ Β config AppConfig μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ „λ°˜μ μΈ μ„€μ •κ³Ό μ˜μ‘΄μ„± μ£Όμž…μ„ κ΄€λ¦¬ν•˜λŠ” ꡬ성 클래슀
DtoMapperConfig DTO λ³€ν™˜μ„ μœ„ν•œ 맀퍼 섀정을 μ •μ˜ν•˜λŠ” ꡬ성 클래슀
ValidatorConfig μž…λ ₯ 검증 λ‘œμ§μ„ μœ„ν•œ μœ νš¨μ„± 검사기 섀정을 μ œκ³΅ν•˜λŠ” ꡬ성 클래슀
πŸ”’οΈΒ Β constants LottoRank 둜또 당첨 쑰건, 당첨 κΈˆμ•‘ λ“±μ˜ μƒμˆ˜λ₯Ό λ³΄κ΄€ν•˜λŠ” enum 클래슀
LottoTicket 둜또 번호의 λ²”μœ„, ν•˜λ‚˜μ˜ 둜또 ν‹°μΌ“μ˜ 번호 갯수 λ“± 둜또 ν‹°μΌ“ ν•˜λ‚˜μ˜ 정보λ₯Ό κ°€μ§€λŠ” enum 클래슀
πŸ•ΉΒ Β controller LottoGameController 둜또 λ‘œμ§μ„ λ©”μΈμœΌλ‘œ λ™μž‘ν•˜λŠ” 컨트둀러 클래슀
πŸ’»Β Β domain MatchResult winningLotto와 둜또 ν•œ μž₯을 λΉ„κ΅ν•œ κ²°κ³Όλ₯Ό μ €μž₯ν•˜λŠ” 클래슀
MatchResults MatchResult 객체 리슀트λ₯Ό κ°€μ§€λŠ” 일급 μ»¬λ ‰μ…˜
RankDecider MatchResultλ₯Ό 보고 λ“±μˆ˜λ₯Ό κ²°μ •ν•˜λŠ” κΈ°λŠ₯의 클래슀
WinningLotto 당첨 λ²ˆν˜Έμ™€ λ³΄λ„ˆμŠ€ 번호 정보 및 κ΄€λ ¨ λ©”μ„œλ“œκ°€ μžˆλŠ” 클래슀
DefaultLottoFactory LottoFactory의 κ΅¬ν˜„μ²΄
Lotto 둜또 ν•œ μž₯의 번호 정보λ₯Ό 가지고 μžˆλŠ” 클래슀
LottoFactory Lotto 객체 생성 Factory Interface
LottoNumbersGenerator μž„μ˜μ˜ 둜또 번호λ₯Ό μƒμ„±ν•˜λŠ” NumberGenerator의 κ΅¬ν˜„μ²΄
Lottos Lotto 객체 리슀트λ₯Ό κ°–λŠ” 일급 μ»¬λ ‰μ…˜
NumberGenerator μž„μ˜μ˜ 숫자λ₯Ό μƒμ„±ν•˜λŠ” κΈ°λŠ₯의 Interface
βœ‰οΈΒ Β dto FinalResultsDto λΌμš΄λ“œ 별 λͺ¨λ“  μžλ™μ°¨μ˜ 이름 및 μœ„μΉ˜ 정보λ₯Ό λ¦¬ν„΄ν•˜λŠ” DTO λ ˆμ½”λ“œ
LottoDto 둜또 ν•œ μž₯의 번호 정보λ₯Ό λ¦¬ν„΄ν•˜λŠ” DTO λ ˆμ½”λ“œ
LottosDto λ‘œλ˜λ“€μ˜ 정보λ₯Ό λ¦¬ν„΄ν•˜λŠ” DTO λ ˆμ½”λ“œ
ProfitDto 수읡과 수읡λ₯ μ„ λ¦¬ν„΄ν•˜λŠ” DTO λ ˆμ½”λ“œ
RankResultsDto λ“±μˆ˜ κ΄€λ ¨ 정보λ₯Ό λ¦¬ν„΄ν•˜λŠ” DTO λ ˆμ½”λ“œ
🚫  exception ErrorMessage μ˜ˆμ™Έ λ°œμƒ μ‹œ μ‚¬μš©λ˜λŠ” μ—λŸ¬ 메세지 Enum 클래슀
πŸ’ΌΒ Β service DtoMapper DTO의 Mapper λ‹΄λ‹Ή Interface
LottoDtoMapper LottoDto 생성 Mapper ν΄λž˜μ„œ
LottosDtoMapper LottosDto 생성 Mapper 클래슀
LottoPurchaseService λ°œν–‰ν•œ λ‘œλ˜μ™€ λ‹Ήμ²¨λ²ˆν˜Έλ₯Ό λΉ„κ΅ν•˜μ—¬ κ²°κ³Όκ°’ μ‚°μΆœν•˜λŠ” Interface
LottoPurchaseServiceImpl LottoPurchaseService의 κ΅¬ν˜„μ²΄
LottoResultService μž…λ ₯값에 맞좰 둜또λ₯Ό λ°œν–‰ν•˜λŠ” κΈ°λŠ₯의 μ„œλΉ„μŠ€ Interface
LottoResultServiceImpl LottoResultService의 κ΅¬ν˜„μ²΄
🌟  utils constants 검증, νŒŒμ‹± κ³Όμ •μ—μ„œ μ‚¬μš©λ˜λŠ” μƒμˆ˜ 보관 enum 클래슀
BonusNumberValidator μž…λ ₯된 λ³΄λ„ˆμŠ€ 번호의 μœ νš¨μ„± 검증을 λ‹΄λ‹Ήν•˜λŠ” 클래슀
ComparisonValidator μž…λ ₯값을 λ‹€λ₯Έ κ°’κ³Ό λΉ„κ΅ν•˜μ—¬ μœ νš¨μ„±μ„ κ²€μ¦ν•˜λŠ” Interface
InputValidator μž…λ ₯값을 κ²€μ¦ν•˜λŠ” validator ν΄λž˜μŠ€λ“€μ˜ Interface
LottoNumberValidator μˆ«μžκ°€ 둜또 번호둜 μœ νš¨ν•œ 지 κ²€μ¦ν•˜λŠ” 클래슀
PositiveIntValidator μž…λ ₯κ°’μ˜ μ–‘μ˜ μ •μˆ˜ μ—¬λΆ€ 검증 클래슀
PurchaseAmountValidator μž…λ ₯ν•œ ꡬ맀 κΈˆμ•‘μ˜ μœ νš¨μ„± 검증 클래슀
WinningNumbersValidator μž…λ ₯ν•œ 당첨 λ²ˆν˜Έλ“€μ˜ μœ νš¨μ„± 검증 클래슀
Parser 각쒅 νŒŒμ‹± 클래슀의 Interface
StringToIntListParser String -> Integer List 둜의 λ³€ν™˜ λ‹΄λ‹Ή 클래슀
StringToIntParser String ->Int 둜의 λ³€ν™˜ λ‹΄λ‹Ή 클래슀
πŸ’¬Β Β view InputMessages μ‚¬μš©μž μž…λ ₯ κ΄€λ ¨ μ•ˆλ‚΄ 메세지지λ₯Ό μ €μž₯ν•˜λŠ” enum 클래슀
NumberOutputFormat 좜λ ₯μ‹œ 숫자 포맷 정보λ₯Ό μ €μž₯ν•˜λŠ” enum 클래슀
OutputMessages 좜λ ₯ 메세지λ₯Ό μ €μž₯ν•˜λŠ” enum클래슀
ConsoleInputView μ‚¬μš©μžμ—κ²Œ μž…λ ₯을 λ°›λŠ” κΈ°λŠ₯을 λ‹΄λ‹Ήν•˜λŠ” 클래슀
InputView Input 클래슀 Interface
ConsoleOutputView μ‚¬μš©μžμ—κ²Œ 응닡을 좜λ ₯ν•˜λŠ” 클래슀
OutputView Output 클래슀 Interface

πŸ—ΊοΈ ν”„λ‘œκ·Έλž¨ ν”Œλ‘œμš° 및 κ΅¬ν˜„ κΈ°λŠ₯

  • βœ… ConsoleInputView κ΅¬μž… κΈˆμ•‘ κ΄€λ ¨ μ•ˆλ‚΄ 문ꡬλ₯Ό 좜λ ₯ν•œλ‹€.

  • βœ… ConsoleInputView 둜또 κ΅¬μž… κΈˆμ•‘μ„ μž…λ ₯λ°›λŠ”λ‹€.

    • β˜‘οΈ PurchaseAmountValidator μœ νš¨ν•˜μ§€ μ•Šμ€ 값이 λ“€μ–΄μ˜€λ©΄ μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
      • βœ”οΈ 인풋이 λΉ„μ–΄μžˆλŠ” 경우 μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
      • βœ”οΈμˆ«μžκ°€ μ•„λ‹Œ 경우 μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
        • 곡백이 ν¬ν•¨λ˜μ–΄ μžˆλŠ” 경우 λ˜ν•œ λ™μΌν•˜λ‹€.
      • βœ”οΈ μˆ«μžμ΄μ§€λ§Œ μ •μˆ˜κ°€ μ•„λ‹ˆλ©΄ μ˜ˆμ™Έ 처리 ν•œλ‹€.
      • βœ”οΈ μ •μˆ˜μ΄μ§€λ§Œ μ–‘μˆ˜κ°€ μ•„λ‹ˆλ©΄ μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
      • βœ”οΈ μ •μˆ˜μ΄μ§€λ§Œ 1000μ›μœΌλ‘œ λ‚˜λˆ„μ–΄ 떨어지지 μ•ŠλŠ” 경우 μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
      • βœ”οΈ 100000을 λ„˜μ–΄κ°€λŠ” 값을 μž…λ ₯λ°›μœΌλ©΄ μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
        • ν˜„ν–‰ 법 상 개인의 둜또 κ΅¬λ§€λŠ” 10λ§Œμ›μ΄ μ΅œλŒ€μ΄κΈ°μ— μ΄λ ‡κ²Œ 기쀀을 μž‘μ•˜λ‹€.
    • β˜‘οΈ LottoGameController μ˜ˆμ™Έκ°€ λ°œμƒν•œ 경우, μ—λŸ¬λ©”μ„Έμ§€ 좜λ ₯ ν›„ λ‹€μ‹œ μž…λ ₯ λ°›λŠ”λ‹€.

  • βœ… LottoPurchaseServiceImpl 둜또λ₯Ό λ°œν–‰ν•œλ‹€.
    • β˜‘οΈ DefaultLottoFactory 둜또 κ΅¬μž… κΈˆμ•‘ 1000원 λ‹Ή 1 개의 둜또λ₯Ό λ°œν–‰ν•œλ‹€.
    • β˜‘οΈ LottoNumbersGenerator 1 개의 둜또λ₯Ό λ°œμƒν•  λ•ŒλŠ” μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” 6개의 숫자λ₯Ό λ½‘λŠ”λ‹€.
      • βœ”οΈ μ΄λ•Œ μˆ«μžλŠ” λ°˜λ“œμ‹œ 1 이상 45 μ΄ν•˜μ˜ μ •μˆ˜μ—¬μ•Ό ν•œλ‹€.

  • βœ… LottoGameController λ°œν–‰κ΄€λ ¨ 정보λ₯Ό LottosDTO λ₯Ό 톡해 viewμ—κ²Œ μ „λ‹¬ν•œλ‹€.

  • βœ… ConsoleOutputView λ°œν–‰ν•œ 둜또 μˆ˜λŸ‰μ„ 좜λ ₯ν•œλ‹€.

  • βœ… ConsoleOutputView λ°œν–‰ν•œ λ‘œλ˜λ“€μ˜ 번호λ₯Ό 좜λ ₯ν•œλ‹€

    • β˜‘οΈ μ΄λ•Œ 둜또 λ²ˆν˜ΈλŠ” μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ 보여쀀닀.

  • βœ… ConsoleInputView 당첨 번호 μž…λ ₯ μ•ˆλ‚΄λ¬Έμ„ 좜λ ₯ν•œλ‹€
  • βœ… ConsoleInputView 당첨 번호λ₯Ό μž…λ ₯ λ°›λŠ”λ‹€. λ²ˆν˜ΈλŠ” μ‰Όν‘œ(,)λ₯Ό κΈ°μ€€μœΌλ‘œ κ΅¬λΆ„ν•œλ‹€.
    • β˜‘οΈ WinningNumbersValidator μ‚¬μš©μžκ°€ 잘λͺ»λœ 값을 μž…λ ₯ν•  경우 μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.

      • βœ”οΈ μž…λ ₯값이 λΉ„μ–΄μžˆλŠ” 경우 μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
      • βœ”οΈ μ‰Όν‘œλ₯Ό κΈ°μ€€μœΌλ‘œ λΆ„λ¦¬λœ 각각의 μ›μ†Œκ°€ μˆ«μžκ°€ μ•„λ‹Œ 경우 μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
      • βœ”οΈ μ‰Όν‘œλ‘œ κ΅¬λΆ„λœ 숫자의 κ°―μˆ˜κ°€ 6κ°œκ°€ μ•„λ‹Œκ²½μš° μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
      • βœ”οΈ 각각의 μˆ«μžκ°€ 1이상 45μ΄ν•˜μ˜ μ •μˆ˜κ°€ μ•„λ‹Œ 경우 μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
    • β˜‘οΈ LottoGameController μ˜ˆμ™Έκ°€ λ°œμƒν•œ 경우, μ—λŸ¬λ©”μ„Έμ§€ 좜λ ₯ ν›„ λ‹€μ‹œ μž…λ ₯ λ°›λŠ”λ‹€.


  • βœ… ConsoleInputView λ³΄λ„ˆμŠ€ 번호 μž…λ ₯ μ•ˆλ‚΄λ¬Έμ„ 좜λ ₯ν•œλ‹€

  • βœ… ConsoleInputView λ³΄λ„ˆμŠ€ 번호λ₯Ό μž…λ ₯λ°›λŠ”λ‹€

    • β˜‘οΈ BonusNumberValidator μ΄λ•Œλ„ 당첨 번호 ν•œ 개 μˆ«μžμ— ν–ˆλ˜ μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό λ™μΌν•˜κ²Œ μ§„ν–‰ν•œλ‹€.
      • βœ”οΈ μž…λ ₯값이 λΉ„μ–΄μžˆλŠ” 경우 μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
      • βœ”οΈ μž…λ ₯값이 μˆ«μžκ°€ μ•„λ‹Œ 경우 μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
      • βœ”οΈ μˆ«μžκ°€ 1이상 45μ΄ν•˜μ˜ μ •μˆ˜κ°€ μ•„λ‹Œ 경우 μ˜ˆμ™Έμ²˜λ¦¬ ν•œλ‹€.
    • β˜‘οΈ LottoGameController μ˜ˆμ™Έκ°€ λ°œμƒν•œ 경우, μ—λŸ¬λ©”μ„Έμ§€ 좜λ ₯ ν›„ λ‹€μ‹œ μž…λ ₯ λ°›λŠ”λ‹€.

  • βœ… LottoResultService λ‚΄λΆ€ λ‘œμ§μ„ 톡해 당첨 κ²°κ³Όλ₯Ό ν™•μΈν•œλ‹€
    • β˜‘οΈ LottoResultService 각각의 λ‘œλ˜μ— λŒ€ν•˜μ—¬ μ•„λž˜ λ‘œμ§μ„ μ§„ν–‰ν•œλ‹€.
      • βœ”οΈ WinningLotto 당첨 λ²ˆν˜Έμ™€ λͺ‡κ°œλ‚˜ μΌμΉ˜ν•˜λŠ” 지, λ³΄λ„ˆμŠ€ 볼은 μΌμΉ˜ν•˜λŠ” 지 ν™•μΈν•œλ‹€.
      • βœ”οΈ RankDecider 확인 결과에 따라 λͺ‡ 등인지 κ²°μ •ν•œλ‹€.
      • βœ”οΈ MatchResults κ²°κ³Όλ₯Ό μ €μž₯ν•œλ‹€.

  • βœ… LottoResultService 수읡λ₯ μ„ κ³„μ‚°ν•œλ‹€
    • β˜‘οΈ LottoResultService μœ„μ—μ„œ κ΅¬ν•œ 전체 κ²°κ³Όλ₯Ό 톡해 μ–Όλ§ˆλ₯Ό μ–»μ—ˆλŠ” 지 κ³„μ‚°ν•œλ‹€.
    • β˜‘οΈ LottoResultService μ΄μˆ˜μ΅μ„ κ΅¬λ§€κΈˆμ•‘μœΌλ‘œ λ‚˜λˆˆλ‹€.

  • βœ… LottoResultService κ²°κ³Όλ₯Ό FinalResultsDto둜 λ³€ν™˜ν•œλ‹€
  • βœ… LottoGameContorller κ²°κ³Όλ₯Ό FinalResultsDto둜 λ³€ν™˜ν•œλ‹€

  • βœ… ConsoleOutputView 당첨 내역을 좜λ ₯ν•œλ‹€.
    • β˜‘οΈ ConsoleOutputView 5λ“±λΆ€ν„° ν•œ 쀄 μ”© "x개 일치 (x,xxx,xxx원) - x개" 꼴둜 좜λ ₯ν•œλ‹€.
      • βœ”οΈ μ΄λ•Œ μˆ«μžλŠ” μ„Έκ°œ λ§ˆλ‹€ μ‰Όν‘œ(,)λ₯Ό λ„£λŠ”λ‹€.
    • β˜‘οΈ ConsoleOutputView 2λ“±μ˜ 경우 μœ„ ν˜•νƒœ 쀑간에 ', λ³΄λ„ˆμŠ€ λ³Ό 일치'κ°€ μΆ”κ°€ λœλ‹€.

  • βœ… ConsoleOutputView 수읡λ₯ μ„ 좜λ ₯ν•œλ‹€.
    • β˜‘οΈ ConsoleOutputView 이전에 계산해 λ†“μ•˜λ˜ 수읡λ₯ μ„ "총 수읡λ₯ μ€ xx.x%μž…λ‹ˆλ‹€."ν˜•νƒœλ‘œ 좜λ ₯ν•œλ‹€.

❓ ν…ŒμŠ€νŠΈ λͺ©λ‘

첫 번째 이미지 두 번째 이미지

첫 번째 이미지 두 번째 이미지


πŸ” κ³ λ―Όν–ˆλ˜ μš”μ†Œ

πŸ“ μž…λ ₯κ°’μ˜ 검증은 μ–΄λ””μ—μ„œ?

viewμ—μ„œ μž…λ ₯값을 λ°›μ•„. controllerλ₯Ό 톡해 model둜 λ„˜κ²¨μ Έμ„œ μ²˜λ¦¬κ°€ μ΄λ£¨μ–΄μ§€λŠ” κ΅¬μ‘°μ—μ„œ, κ³Όμ—° μ–΄λ””μ—μ„œ μž…λ ₯값에 λŒ€ν•œ 검증을 ν•΄μ•Όν•˜λ‚˜μ— λŒ€ν•΄μ„œ λ§Žμ€ 고민을 ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

κ·Έ κ²°κ³Ό viewμ—λŠ” μ΅œμ†Œν•œμ˜ 둜직이 μ‘΄μž¬ν•˜κ³ , μ»¨νŠΈλ‘€λŸ¬λŠ” 전체 둜또 둜직의 κ±°λŒ€ν•œ 흐름을 λ‹€λ£¨λŠ” 것이 μ˜³μ€ ꡬ쑰라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έ κ²°κ³Ό μ„œλΉ„μŠ€ λ ˆμ΄μ–΄μ—μ„œ μœ νš¨μ„± 검증을 μ§„ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

도메인 λ‚΄μ˜ 둜직이 μ‹€ν–‰λ˜κΈ°μ „μ— μ„œλΉ„μŠ€μ—μ„œ 일차적으둜 μž…λ ₯값에 λŒ€ν•œ 검증을 끝내고, μ£Όμš”ν•œ 클래슀인 Lotto의 κ²½μš°μ—λŠ” 생성 μ‹œ ν•œ 번 더 μž…λ ₯값에 λŒ€ν•œ 검증을 ν•˜λŠ” 방식을 μ±„νƒν–ˆμŠ΅λ‹ˆλ‹€.


πŸ“ μž…λ ₯ μ•ˆλ‚΄μ‹œ λ‚˜μ˜€λŠ” 좜λ ₯문은 Output? Input? μ–΄λ””μ—μ„œ 관리?

이에 λŒ€ν•΄μ„œ μ €λ²ˆ μ£ΌλΆ€ν„° λ§Žμ€ 고민이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 일단은 좜λ ₯μ΄λ‹ˆκΉŒ Output? μ•„λ‹ˆλ©΄ κ·Έλž˜λ„ μž…λ ₯κ³Ό κ΄€λ ¨λœ μš”μ†Œμ΄λ‹ˆκΉŒ Input? 이에 λŒ€ν•΄μ„œ λ§Žμ€ μ‚¬λžŒλ“€κ³Ό μ΄μ•ΌκΈ°ν•˜κ³ , μ½”λ“œλ¦¬λ·°λ₯Ό ν•˜λ©° 슀슀둜 기쀀을 μ„Έμ›Œλ΄€μŠ΅λ‹ˆλ‹€.

제 κ²°λ‘œμ€ Inputμ΄μ—ˆμŠ΅λ‹ˆλ‹€. InputView와 OutputViewκ°€ μ•„λ‹Œ Reader와 Printerμ˜€λ‹€λ©΄ μ‹¬ν”Œν•˜κ²Œ 무언가 값을 μ™ΈλΆ€λ‘œλΆ€ν„° 읽어 μ˜€λŠ” 것은 Reader에, μ–΄λ–€ 것이든 좜λ ₯ν•˜λŠ” 것은 Printer에 μœ„μΉ˜μ‹œμΌ°μ„ κ²ƒμž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μ§€κΈˆ μ œκ°€ λ‚˜λˆˆ 것은 Inputview와 OutputViewμž…λ‹ˆλ‹€. κ²°κ΅­ "μž…λ ₯에 κ΄€λ ¨λœ" 사항은 InputView에 담겨 있고, 이 Input에 μ˜ν•΄μ„œ 무언가 μΌμ’…μ˜ κ²°κ³Όκ°’μœΌλ‘œ 좜λ ₯λ˜λŠ” 행동에 λŒ€ν•΄μ„  "OutputView"에 λ‹΄κ²¨μž‡λŠ” 것이 λ§žλ‹€κ³  μƒκ°ν•˜μ—¬ μ§€κΈˆκ³Ό 같은 ꡬ쑰둜 κ²°μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€.


πŸ“ μƒμˆ˜λ₯Ό ν•œ κ³³μ—μ„œ? μ•„λ‹ˆλ©΄ μ—¬λŸ¬ κ³³?

λ˜λ‹€λ₯Έ λ§Žμ€ 고민이 있던 λΆ€λΆ„μž…λ‹ˆλ‹€. 이 ν”„λ‘œκ·Έλž¨μ—μ„  λ§Žμ€ λΆ€λΆ„μ—μ„œ μƒμˆ˜κ°€ ν™œμš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ μƒμˆ˜λƒμ— λ”°λΌμ„œ ν•˜λ‚˜μ˜ νŒŒμΌμ—μ„œλ§Œ ν™œμš©λ˜λŠ” 것도 있고, ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€μ—μ„œ ν™œμš©λ˜λŠ” 것도 μžˆμ—ˆμœΌλ©°, μ „μ—­μ—μ„œ μ‚¬μš©λ˜λŠ” 것도 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 이듀을 ν•˜λ‚˜μ˜ κ±°λŒ€ν•œ νŒŒμΌμ—μ„œ 관리할 지, μ•„λ‹ˆλ©΄ κ°œλ³„μ˜ νŒŒμΌμ—μ„œ 관리할 지 κ³ λ―Όν–ˆμŠ΅λ‹ˆλ‹€.

제 결둠은 κ°œλ³„μ˜ νŒŒμΌμž…λ‹ˆλ‹€. κ²°κ΅­ μƒμˆ˜λ₯Ό ν•œ κ³³μ—μ„œ κ΄€λ¦¬ν•˜λŠ” 경우, 큰 μž₯점이 ν•œ κ³³μ—μ„œ κ΄€λ¦¬ν•˜κΈ° μ‰½λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

그런데 이번 ν”„λ‘œκ·Έλž¨μ˜ 경우, μƒμˆ˜κ°€ String , int, DecimalFormat λ“±λ“± λ‹€μ–‘ν•œ μžλ£Œν˜•μœΌλ‘œ μ‘΄μž¬ν•˜λ©°, κ·Έλƒ₯ μƒμˆ˜ μžμ²΄κ°€ λ§ŽμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 경우 였히렀 ν•œ κ³³μ—μ„œ κ΄€λ¦¬ν•˜λŠ” 것이 ν—·κ°ˆλ¦¬κ²Œ ν•  것이라고 νŒλ‹¨ν•˜μ—¬ μ‚¬μš©μ²˜ λ³„λ‘œ μƒμˆ˜λ₯Ό λ‚˜λˆ„μ–΄μ„œ μœ„μΉ˜μ‹œμΌ°μŠ΅λ‹ˆλ‹€.

이것이 였히렀 μœ„μΉ˜μ— 따라 μ–΄λ””μ—μ„œ μ“°μ΄λŠ” 지가 λͺ…λ£Œν•΄μ§€κΈ° λ•Œλ¬Έμ— 쒋은 것 κ°™μŠ΅λ‹ˆλ‹€.


πŸ“ DTO의 μ˜¬λ°”λ₯Έ μ‚¬μš©λ²•

μ΄λŠ” 아직도 고민인 λΆ€λΆ„μž…λ‹ˆλ‹€. μ €λŠ” 이번 ν”„λ‘œκ·Έλž¨μ—μ„œ 컨트둀러λ₯Ό 톡해 μ„œλΉ„μŠ€ λ ˆμ΄μ–΄λ‘œ λ„˜μ–΄κ°€λŠ” λ°μ΄ν„°λŠ” μœ νš¨μ„± 검증을 μ§„ν–‰ν•œ ν›„ κ·ΈλŒ€λ‘œ μ „λ‹¬ν•˜μ˜€κ³ , μ„œλΉ„μŠ€ λ ˆμ΄μ–΄μ—μ„œ νŠΉμ • 둜직의 결과물둜 λ‚˜μ˜€λŠ” λ°μ΄ν„°λŠ” DTOλ₯Ό ν™œμš©ν•˜μ—¬ 컨트둀러 λ ˆμ΄μ–΄λ‘œ λ‚΄λ³΄λƒˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 이게 정말 μ΅œμ„ μ˜ 방법인지에 λŒ€ν•΄ 아직 λΆˆν™•μ‹€ ν•©λ‹ˆλ‹€. View λ ˆμ΄μ–΄μ™€ 컨트둀러 λ ˆμ΄μ–΄ μ‚¬μ΄μ—μ„œλŠ” DTOλ₯Ό μ•„μ˜ˆ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 지 λ“±, μ—¬λŸ¬κ°€μ§€ λΆ€λΆ„μ—μ„œ DTOκ΄€ν•œ λ…ΌμŸμ΄ 생기기에 이λ₯Ό μ’€ 더 κ³ λ―Όν•΄λ΄μ•Όκ² μŠ΅λ‹ˆλ‹€.


⭐ 섀계 μ‹œ μ£Όμš” 포인트

πŸ”” MVC νŒ¨ν„΄ μ€€μˆ˜

  • λ·°, μ„œλΉ„μŠ€, μœ ν‹Έ, 도메인, 컨트둀러 λ“±μ˜ 역할을 λͺ…ν™•νžˆ λΆ„λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€

πŸ”” DI & DIP

  • AppConfig, Factory 클래슀 등을 μ΄μš©ν•΄μ„œ 슀슀둜 μ˜μ‘΄μ„±μ„ μƒμ„±ν•˜λŠ” 것이 μ•„λ‹Œ μ˜μ‘΄μ„±μ„ μ£Όμž…λ°›λ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • μΈν„°νŽ˜μ΄μŠ€λ₯Ό 적극 ν™œμš©ν•˜μ—¬ μƒμœ„ λͺ¨λ“ˆμ€ ν•˜μœ„ λͺ¨λ“ˆμ— μ’…μ†λ˜μ§€ μ•Šλ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ”” ν•˜λ“œ μ½”λ”© 지양

  • 적극적으둜 enum을 μ‚¬μš©ν•˜κ³ , 포맷을 μ΄μš©ν•¨μœΌλ‘œμ¨ ν•˜λ“œμ½”λ”©μ„ μ΅œμ†Œν™” μ‹œμΌ°μŠ΅λ‹ˆλ‹€

πŸ”” YANGI & KISS μ€€μˆ˜

  • μ§€κΈˆ ν•„μš”ν•œ κΈ°λŠ₯만 λ„£κ³ , λΆˆν•„μš”ν•˜κ²Œ λ‹€μ–‘ν•œ λ‘œμ§μ„ λ„£κ±°λ‚˜ 아직 μΌμ–΄λ‚˜μ§€ μ•Šμ€ 뢀뢄에 λŒ€ν•œ 코딩을 μ œκ±°ν•˜κ³  μ΅œμ†Œν™”ν•˜μ—¬ μ½”λ“œλ₯Ό κ°„λž΅ν™”ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ”” μ½”λ“œ μˆœμ„œλ„ μ»¨λ²€μ…˜μ΄λ‹€

  • λ‹¨μˆœν•˜κ²Œ κ΅¬ν˜„ν•œ μˆœμ„œλŒ€λ‘œ μ½”λ“œλ₯Ό μ λŠ” 것이 μ•„λ‹Œ, μ½”λ“œλ₯Ό μ½λŠ” μž…μž₯μ—μ„œ μ˜λ„λ₯Ό νŒŒμ•…ν•  수 μžˆλ„λ‘ λ°°μΉ˜μ‹œμΌ°μŠ΅λ‹ˆλ‹€.

πŸ”” else 지양

  • If-elseλ₯Ό μ‚¬μš©ν•˜κΈ° λ³΄λ‹€λŠ” If-return If-return ν˜Ήμ€ μŠ€νŠΈλ¦Όμ„ μ΄μš©ν•œ μ½”λ“œλ₯Ό μ§œμ„œ Else μ‚¬μš©μ„ μ§€μ–‘ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ”” ν•˜λ‚˜μ˜ λ©”μ„œλ“œμ— ν•œ 가지 κΈ°λŠ₯

  • λ©”μ„œλ“œ λ§ˆλ‹€ λ”± ν•œ μ€„λ‘œ 적을 수 μžˆλŠ” κΈ°λŠ₯λ§Œμ„ νƒ‘μž¬ν•˜μ—¬ λ©”μ„œλ“œ ν•˜λ‚˜μ˜ 크기λ₯Ό μ΅œμ†Œν™”ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%