[TDD, 클린 코드 with Java] 미션과 상관없는 이야기
by Hi.Claire🐣 TDD, 클린 코드 with Java 19기 (박재성, 넥스트스텝)
미션과 상관없는 이야기
지난주 목요일 첫 번째 라이브 강의가 끝난 후 5일동안 넥스트스텝에서 손을 놓고 있었다.
금요일은 밀린 집안일을 처리하고 또 카메라 찾아본다는 핑계로 공부를 안했고, 주말에는 김영한 자바 강의를 듣느라 바빴다.
사실 라이브 강의를 다시 동영상으로 제공한다는 점, 그리고 라이브 코딩 강의가 쪼끔 어려웠던 점도 한몫한 것 같다.
어려우면 회피하고 싶은 못된 마음이 드는데 이번엔 꼭 이겨내야 한다!
수강료를 생각하며 이겨내자!! 💸
80만원이면 내가 사고 싶은 카메라 중고로 살 수 있자나!!...
그리고 무엇보다 박재성님이 예비낙오자가 된 나를 구제하기 위해 이런 메시지도 보내주셨다.🥹
왜 방준이처럼 혼자 알아서 스스로 미리미리 챡챡 하지 못하는거냐!!!
조금이라도 관심을 받아야 미션을 시작하는 관종병이라도 걸려버린걸까... 정신차리고 열심히 하자!
어쨌든 남은 한 달간 작심삼일을 10번 반복하자는 마음으로 다시 열심히 미션을 수행해보겠다.
미션1. 자동차 경주 - 단위 테스트
2단계 - 문자열 덧셈 계산기
https://edu.nextstep.camp/s/KIXpLZ6i/ls/s9PIIgE6
NEXTSTEP
edu.nextstep.camp
기능 요구사항
- 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환 (예: “” => 0, "1,2" => 3, "1,2,3" => 6, “1,2:3” => 6)
- 앞의 기본 구분자(쉼표, 콜론)외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는 문자열 앞부분의 “//”와 “\n” 사이에 위치하는 문자를 커스텀 구분자로 사용한다. 예를 들어 “//;\n1;2;3”과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다.
- 문자열 계산기에 숫자 이외의 값 또는 음수를 전달하는 경우 RuntimeException 예외를 throw한다.
프로그래밍 요구사항
- 메소드가 너무 많은 일을 하지 않도록 분리하기 위해 노력해 본다.
(소소한) TDD가 좋은 이유
구분자가 들어오지 않은 경우와 구분자가 들어온 경우의 로직을 분리해서 구현했는데 이 둘을 구분해야 하는지 헷갈렸다.
그래서 구분자가 들어오지 않은 경우의 로직을 주석 처리하고 테스트 코드를 돌렸더니 테스트에 통과했다.
TDD 덕분에 이 두 경우의 로직은 따로 구현하지 않아도 된다는 것을 쉽게 판단할 수 있었다!
String[] strings = text.split("[,:]");
// if (strings.length == 1) {
// return Integer.parseInt(string);
// }
int result = 0;
for (String s : strings) {
result += Integer.parseInt(s);
}
기능 요구사항 중에 음수를 전달할 경우 RuntimeException 예외가 발생해야 한다는 내용이 있다. (예 : “-1,2,3”)
- 구글에서 “junit4 expected exception”으로 검색해 해결책을 찾는다.
Assert an exception is thrown Guide
입력값이 ","와 ":" 구분자로 들어온 경우뿐만 아니라 커스텀 구분자로 들어온 경우에도 체크해야 한다.
리팩터링할 때 참고할 내용
(참고) Clean Code Guide - 함수(메소드)
NEXTSTEP
edu.nextstep.camp
(참고) 엘레강트 오브젝트 - 메서드 이름을 신중하게 선택하세요
NEXTSTEP
edu.nextstep.camp
메서드를 분리하면서 메서드 이름을 지어야 하는데 참 어렵다.
빌더와 조정자에 대한 설명을 참고하자.
빌더(builder)는 명사, 조정자(manipulator)는 동사로 짓는다.
빌더는 뭔가를 만들고 새로운 객체를 반환하는 메서드로서 void를 반환할 수 없다.
조정자는 객체로 추상화한 실세계의 엔티티를 수정하는 메서드로서 반환타입은 void여야 한다.
'☕️ Java > TDD, 클린 코드 with Java' 카테고리의 다른 글
[TDD, 클린 코드 with Java] 자동차 경주 미션 피드백 : 테스트 코드 작성, 전략패턴, 일급컬렉션 (0) | 2024.10.06 |
---|---|
[TDD, 클린 코드 with Java] 자동차 경주 미션 피드백 : 예외 처리, 매직넘버 치환 (0) | 2024.10.05 |
[TDD, 클린 코드 with Java] 과정 소개, 학습 테스트 구현, 메서드 분리 (3) | 2024.09.26 |
[TDD, 클린 코드 with Java] 개발 환경 세팅, AssertJ, JUnit5 가이드 (0) | 2024.09.26 |
[TDD, 클린 코드 with Java] 시작하며 (2) | 2024.09.25 |
블로그의 정보
Claire's Study Note
Hi.Claire