728x90
👥 프리팀 어벤져스
- 김민희, 문종운, 박이슬, 이근우, 황창현, 홍혁준(🙌)
🧑🏫 프리팀을 위해 시간 투자 해주시는 멘토님
- 네이비 멘토님(👍)
📔 스터디 주제
플레이그라운드
edu.nextstep.camp
🔥 동기부여
시간이 흐를수록 해야할 미션 난이도가 올라감에도 우리 팀원들은 열정이 불타오른다. 분명 머지않아 다들 원하는 목표를 이룰 것이라고 생각한다. 나도 우리 팀원들의 열정에 전염되어 불타오르자!
1. Random 같은 테스트를 하기 어려운 코드에 대해서는 의존성을 어떻게 부여하는 것이 좋을까요?
- 이번 2주차 과제를 수행하면서 'Random' 처럼 결과를 예측하기 어려운 기능들에 의존성을 가지게 되면 테스트 하기가 어려워 진다는 문제가 발생했다. 때문에 의존성을 최대한 줄여보려고 노력하면 노력할 수록 코드가 오버 엔지니링 되는 느낌을 받았다.
- 나 같은 경우는 중간에 가독성을 위해 어느 정도 타협을 봤는데, 어떻게 하는 것이 좋을까?
멘토님께선 "테스트하기 어려운 부분을 찾아 가능한 구조로 개선하는 것은 어떨까요?" 라고 해주셨다.
예를 들어, 'RacingController -> RacingGame -> Car'와 같이 의존 관계를 가진다면 'Car'가 테스트 가능한지 확인하는 것이다.
즉, 'Car'에 랜덤과 같이 예측하기 어려운 로직이 있다면 어려운 로직의 의존 관계를 객체 그래프의 상위로 이동시켜서 'RacingCar와 Car'는 테스트 가능하게 하는 것이다.
2. 이번 과제에서 전략패턴을 사용해 설계를 하다보니 도메인 패키지에 있는 내용이 방대해졌다. 패키지를 더 분할해야 할까?
사실 결국 'Strategy'도 도메인이다. 때문에 도메인 패키지에 있는 것이 맞지만, 도메인 안에서 관련 있는 객체끼리 한 번 더 패키징한다면 가독성도 챙길 수 있을 것이다.
3. 일급 컬렉션에서 사용하는 컬렉션은 단순히 불변 객체로 변환해서 보내는 것이 맞을까?
class Cars {
List<Car> cars = new ArrayList<>();
List<Car> method() {
return Collections.unmodifiableList(cars);
}
}
- 나 포함 모든 팀원들은 우리가 'Cars'라는 일급 컬렉션을 사용한 이유가 'List<Car>'를 'Cars'로 사용한다는 것이다. 따라서 반환 시 다음과 같이 수행해야 한다고 의견을 내었다.
Cars method() {
return new Cars(list);
}
멘토님도 우리와 의견이 같다고 해주셨다. ㅎㅎ
데브코스 네이비 프리팀 화이팅❗️
728x90
'Study > [무럭무럭 시즌 0] 자바 플레이그라운드 with TDD, 클린 코드' 카테고리의 다른 글
데브코스 프리팀과 즐거운 스터디 - 3주차 (1) | 2023.07.08 |
---|---|
데브코스 프리팀과 즐거운 스터디 - 1주차 (0) | 2023.07.08 |