우테코 프리코스 6기 3주차 회고

user profile img

신현호

Chat

우테코 프리코스 6기

Post Thumbnail

목차

    서론

    많이 늦었지만 우테코 3주차 후기를 작성해보려고합니다. 4주차는 내일 업로드 될 예정입니다!
    3주차 미션은 바로.. 로또였습니다. 이전에도 나왔던 문제이기에 준비하시는분들은 한번쯤 다 풀어보셨을거라고 생각하는 문제기도 합니다!

    문제 자체에 난이도가 높지는 않았지만, 요구사항들이 추가된 부분들이 있었습니다.
    바로 도메인에서 유효성 검사를 진행할 것 이라는 조건이었습니다.

    덕분에 테스트코드도 의도한 설계대로 동작하도록 작성되어있습니다. 이는 반대로 말하면 테스트 코드를 역으로 분석해보면 문제의 의도를 파악할 수 있다는 말이기도합니다.
    이부분을 이전에 했을때도 생각을 했었지만, 이번에는 까맣게 잊고있다 마지막에 테스트코드 채점할 때 생각나서 부랴부랴 로직 설계를 수정했던 것 같습니다 ㅎㅎ..

    서론은 이쯤하고, 이번 미션에서 학습한 점에 대해서 적어보겠습니다!

    이번에 학습한 내용

    유효성 검증은 도메인의 몫이다

    validation

    이전에도 작성했던 내용이었던 것 같은데요, 저는 view단에서 유효성 검증을 하고 controller에 넘기는 방식으로 로직을 작성했었습니다.
    하지만 이번에는 앞서 말했듯이 도메인에서 유효성 검사를 진행해야합니다. (테스트 코드를 분석해보면 디테일하게 접근할 수 있습니다.)

    물론, 문제를 일괄적으로 채점해야하는 우테코의 입장도 있었겠지만 출제자의 입장에서 생각했을 때 유효성 검사 로직은 도메인의 소관이라고 보았음을 알 수 있습니다.
    따라서 저도 이번 문제에서는 도메인에서 유효성 검증을 진행했고(안할 수도 없었고), 앞으로 이러한 문제를 직면했을 때도 도메인에서 유효성을 검증하지 않을까 싶네요!

    객체를 더 객체스럽게 사용하기

    js

    getBonusLottoNumber() {
      return this.#bonusNumber;
    }
    

    이번에 제가 작성한 로직 중 BonusLotto.jsLotto.js에서는 수행하는 기능이 단순히 getter의 기능 뿐이었습니다.
    물론 마지막에 설계를 바꾸느라 해당 도메인의 역할이 붕떠서 어쩔 수 없었다고 변명은 하나.. 이는 명백한 설계의 실수가 맞습니다.

    객체지향 프로그래밍이란 무엇일까요? 간단하게 말해서 다른 객체와 메시지를 주고받으며 로직을 구성해나가는 프로그래밍 방법이라고 할 수 있습니다.
    그런데 객체가 단순히 값을 저장하고 반환하는 기능만 한다면 객체가 메시지를 주고받는다고 말할 수 있을까요?

    이는 디미터의 법칙에 위반되는 사항이기도 합니다.

    따라서 단순히 객체에 저런 getter만 생성하기보단 메세지를 던져서 객체가 로직을 수행하도록 해야합니다.
    아래는 제 코드에서 메세지를 던져 로직을 수행하게 한 예시입니다 :)

    js

    compare(winningNumbers, winningBonusNumber) {
      const compareResult = {
        mainNumber: 0,
        bonusNumber: false,
      };
    
      this.#lottoNumbers.forEach((number) => {
        if (winningNumbers.includes(number)) {
          compareResult.mainNumber += 1;
        }
        if (number === winningBonusNumber) {
          compareResult.bonusNumber = true;
        }
      });
    
      return compareResult;
    }
    

    참고 자료

    레포지토리

    Profile Image

    신현호

    Frontend Developer

    프론트엔드 개발자를 꿈꾸고 있는 대학생입니다. 끊임없이 배우고 성장하는 개발자가 되기 위해 노력하고 있습니다.

    우테코 프리코스 6기

    총 5개의 포스트가 존재합니다.