[우아한테크코스] 2/14 TIL

less than 1 minute read

오늘 받은 피드백 정리

  • getter 관련
    .getName().getName() 을 방지하기 위해
      public String getName() {
          return carName.getName();
      }
    

    데이브에게 물어본 결과 분명한 캡슐화로 인한 차이가 있다고 하였다.
    애초에 구현한 방식은 마치 사람이 직접 커피를 넣고 물을 넣어 타는 느낌이라면,
    아래에 구현한 방식은 직접 자판기에게 커피를 타달라고 요청한 느낌이라고 하였다.
    그러므로 책임을 지우는 방식으로 위와 같이 구현하도록 하자 앞으로 :)

  • 단위테스트 관련
    어느 정도의 로직까지 단위 테스트를 하여야 하는 것일까?
    지금의 내 생각은 이미 검증된 로직을 가져다 사용한다면 단위테스트가 필요치 않을 것이라 생각했는데 데이브가
      public void moveAllCars() {
          for (Car car : cars) {
              car.moveByNumber(RandomNumber.make());
          }
      }
    

    이 부분에서 moveByNumber가 동일하게 호출되는지 어떻게 알 수 있을지에 대해서 고민해보라고 추천하였다.
    데이브는 개발자가 모든 오류 상황에 대해서 대처하기 힘들기에 요구사항에 맞는 테스트를 먼저 작성한 후 서비스를 운영하며 에러가 나는 부분에 대해 추가적으로 테스트를 보완해야한다 고 하였다. 뿐만 아니라, 다른 객체에서 호출될 가능성이 있는 모든 public 메서드는 우선 테스트를 작성하도록 하자.