ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 우테코 프리코스 3주차 과제 소감
    비밀 2023. 11. 20. 11:58

    처음 기능 구현 목록을 작성하기위해 해당 기능을 어떤 클래스가 담당 해야할 지, 역할 분담을 먼저 생각하였다. 클래스의 내의 응집도를 높히고 객체간의 역할은 확실하게 분리하는 과정에서 서비스 구성에 대해 깊이 있게 생각하고 공부할 수 있는 좋은 기회였다. MVC패턴을 적용하여 도메인 클래스 의 가장 작은 기능을 하는 LottoNumber부터 시작하여 가장 작은 기능부터 코드를 작성하고 그 기능을 테스트 하며 커밋하였다. 그리고 점차 기능의 범위를 확장해 나가며 미션 요구사항을 충족시키는 데 까지 발전시켜나갔다.
    한 클래스 내에서 의존도가 높아지는 경우 클래스로 분리하여 하나의 기능을 온전히 수행하도록 하였는데, 클래스를 분리하며 느낀 큰 장점은 테스트가 용이하다는 점이다. 지금까지 과제를 진행하면서 private메소드의 테스트에 대해서 공부하였는데, private메소드를 담고 있는 public메소드 테스트로 커버가 가능케 하고 그래도 테스트 할 거리가 남아있다면 이는 디자인  개선의 신호라는 개념이 있었다. 예전에는 이게 무슨 소리인가 궁금했지만 직접 프로젝트를 진행하며 역할에 따라 클래스를 분리하니 객체에게 기능을  할당할 수 있어 확실히 테스트 하기가 한결 편하였다. 해당 클래스의 기능을 수행하는 메소드는 public으로 노출되어 있기에, 해당 클래스의 순수한 기능만 테스트하면 되기 때문이다. 구현 기능은 여러 역할이 모여 완성되지만 하나하나 작은 기능들을 테스트하며 진행하여  확신을 가지며 프로젝트를 진행할 수 있었다. 이것이 TDD방식의 가장 큰 장점인 것 같다. 개발 속도가 느리다고 하여도 확신을 가지고 한 걸음씩 진행하는 게 더 나은 방법이라고 생각한다.
    Enum의 활용에 대해 깊게 공부할 수 있었다. 하나의 상태가 가지는 정보들을 한꺼번에 표현할 수 있었고, enum자체의 메소드 또한 만들어서 정보들을 활용할 수 있었다. 특히 enum필드에 BiPredicate를 놓아 보너스 넘버와 맞은 개수를 근거로 enum상수를 지정할 수 있다는 점도 놀라운 활용이었다. 
    stream에 대한 공부도 많이 할 수 있었다. 반복문을 사용하는게 더 빠르다고 해도 stream을 사용하면 무엇보다 가독성이 좋아진다는 장점이 있다. 코드로 작성해야 하는 로직을 stream이 제공하는 함수로 간단하게 표현할 수 있어 간결한 표현이 가능했다. 
    무엇보다도 지키고자 했던 것은 하나의 메소드는 하나의 역할을 하도록 하는 것이었다. 메소드를 작성할 때 메소드 작성에 대한 수많은 경우의 수가 있고, 해당 기능을 구현하기 위해 어떤 클래스가 이 역할을 하는 메소드를 가져야 가장 간결한 표현이 될지 깊이 생각하며 프로젝트를 진행하였는데, 이 과정에서 코드 보는 안목과 작성 능력을 단련할 수 있었던 것 같다. 
    생성자 대신 객체를 생성하는 팩토리 메소드와 안전한 데이터 전송을 위한 Dto에 대한 학습을 진행한 후 구현해 보았고 해당 개념의 역할에 대해 조금 더 알 수 있게된 경험이었다. 
    서비스의 구성에 대해 깊이 생각하고, 가독성과 더불어 데이터를 안전하고 효율적으로 활용하는 방법을 코드로 표현할 수 있는 감사한 프로젝트 과제였다

    '비밀' 카테고리의 다른 글

    우테코 프리코스 2주차 과제소감  (0) 2023.11.20
    우테코 프리코스 4주차 과제 소감  (0) 2023.11.20
Designed by Tistory.