우아한테크코스 3기 백엔드 Lv1 [로또 1단계 - 자동 1차] 학습로그

taehee-kim-dev·2021년 2월 19일
0
post-thumbnail

Github repository

Pull Request

인비의 학습로그


최초 PR


[설계] 클래스 다이어그램 - 5

내용

  • 맨 처음 설계 과정에서 페어와 함께 클래스다이어그램을 그렸다.
    모든 세부사항, 구체적인 연관관계를 그렸다.
    하지만 UML 정식 형식과 많이 달랐고, 너무 복잡해 이해하기 힘들었다.

  • 페어프로그래밍을 종료하고, [UML 실전에서는 이것만 쓴다 / 로버트 C.마틴] 책을 보았다.
    그런데 오히려 로버트 마틴은 "세세하게 이것저것 다 적어놔봤자 알아보기만 힘들고,
    구체적인것은 코드 구현시점에 정하면 된다. 모두가 잘 이해할 수 있도록 간소화 된 형식으로 UML을 작성해야 한다."

    라고 했다.
    점선, 집합, 합성도 그냥 구분하지 말고, 단순히 관련 관계만 표시하라고 했다.

  • 로버트 마틴의 말을 참고해 최대한 이해하기 쉽도록 다시 UML을 그렸다.

링크


[설계] MVC - 3

내용

  • 핵심 비즈니스 로직을 가지는 도메인 객체들을 domain 패키지에, UI와 관련된 객체들을 view 패키지에 구현했다.

  • MVC 패턴 기반으로 view 패키지의 객체가 domain 패키지 객체에 의존할 수 있지만,
    domain 패키지의 객체는 view 패키지 객체에 의존하지 않도록 구현했다.


[TDD] 테스트 주도 개발 - 4

내용

  • 모든 코드작성을 페어와 함께 TDD로 구현하였다.
  • TDD로 진행하니 구현된 코드의 기능에 확신을 가질 수 있었다.
  • 리팩토링시, 테스트코드의 위력을 느낄 수 있었다. 자유롭고 확신있는 수정이 가능했다.

링크


[OOP] - 원시값 포장 - 2

내용

  • 로또 번호 등 모든 원시값을 포장하였다.
  • 포장된 원시값이 하나의 도메인이 되는것을 경험했다.
  • 생성자에서 유효성 검사가 가능해짐을 깨달았다.

링크


[OOP] - 일급 컬렉션 적용 - 2

내용

  • 도메인을 담는 컬렉션들은 모두 일급 컬렉션으로 감싸서 최대한 캡슐화를 하고, 다양한 비즈니스 로직을 내부에 구현했다.
  • 외부에서는 내부의 구현은 모른 채, 단순히 요청 메시지만 보내고 응답 메시지를 받는, OOP적인 구현을 했다.

링크


[JDK] - Enum - 4

내용

  • 당첨 순위를 Enum 타입으로 처리했다.
  • 각 등수를 명확히 구분하고, 관련된 메시지나 당첨 상금들을 각각 묶으니 분리와 활용이 편리했다.
  • 해당 Enum 클래스와 관련된 함수들 또한 클래스 내부에 위치시켜, OOP에 맞도록 구현했다.

링크


[JDK] - Stream API - 2

내용

  • 모든 함수의 인덴트를 1로 맞추고, 가독성 좋은 코드를 작성하기 위해 Stream API를 적극 활용했다.

링크


[OOP] - Domain validation - 2

내용

  • Validation을 최대한 도메인 객체 내부의 생성자 했다.

  • 아무리 생각해도 도메인 내부에 어울리지 않는 Validation 작업들은 도메인 외부의 InputView의 함수에서 했다.

링크



1차 코드리뷰


[JDK] - OS 독립적 개행문자 - 2

내용

  • OS마다 개행문자가 다르다는것을 간과하고 코드에 개행문자를 __\n__로 지정해버렸다.
  • 리뷰어 휴가 이에 대한 피드백으로 System.lineSeparator() 에 대해 찾아보라고 해서 오라클 자바 문서를 찾아보았다.
  • 해당 함수는 운영체제에 맞는 개행문자를 반환해준다. 즉, OS로부터 독립적인 개발을 할 수 있는 것이다. 이런게 있었다니!! 엄청난 꿀팁이다!!

링크


profile
Web Back-End (Spring, JPA, AWS)

관심 있을 만한 포스트

0개의 댓글