전체 글

1주차가 끝나고... 4주차의 시작도 어김없이 리뷰로 시작했다. 2주차 과제 리뷰때 너무 많은 리뷰를 하는건 오히려 독이라는걸 깨닫고, 이번엔 상대적으로 적은 사람들과 리뷰를 진행했다. 처음 생각한 max 리뷰 횟수는 일곱 분이었는데, 리뷰 마감 이후에 이전에 리뷰했던 분들도 감사하게도 또 찾아와주셔서 지금까지 9명의 리뷰를 진행했다. | ⬆️ 저번 주 보다 훨씬 줄은 리뷰 알림 메일 이후에 달린 리뷰 요청들은 시간이 날때 기분전환으로 짬짬이 해야겠다! 리뷰 피드백 3주차 과제에서 작성 시점까지 받은 피드백들과 느낀 점들은 이렇다. 1. enum 으로 선언한 정규식들의 이름을 더 명확하게 설정할 것 PURCHASE_AMOUNT_REGEX("^[0-9]+$") 변경 후 PURCHASE_AMOUNT_REGE..
아래와 같은 Lotto 클래스가 있다. public class Lotto { private final List numbers; public Lotto(List numbers) { this.numbers = validate(numbers); } private void validate(List numbers) { if (numbers.size() != LOTTO_NUMBER_AMOUNT_MAX.getValue()) { throw new IllegalArgumentException(LOTTO_AMOUNT_MAX_ERROR_MESSAGE.getMessage()); } } } 애플리케이션의 목적은 로또 번호와 정답 번호를 비교해서 당첨 통계를 내는 것이다. 우리가 배운 바, 객체는 외부에서 메시지를 받아 스스로가..
3주차 과제를 돌아보며 | 로또 레포 시간 과제 소요 시간 : 일~수 4일간 약 30시간 + 회고글 n시간 wakatime 으로 봤을 때, 7일간 IDE에 커서가 머무른 시간이 약 24시간이다. (월요일 이전에 기록된 시간은 IDE를 켜놓고 설계해서 그렇다) 과제를 받은 목요일, 다음날인 금요일엔 병원 방문 이슈와 코드 리뷰로 인해 과제 확인도 못했고, 토요일과 일요일엔 뺄 수 없는 개인적인 일정으로 인해 일요일 밤에 한 조금의 설계를 빼곤 뭔가를 하지 못했다. 사진을 보면 알겠지만, 월요일 부터 코드 작성을 시작했다. 설계에 한 2시간 쓴 것 같고, 학습에 4시간 정도 사용한 것 같다. 구현할 시간이 부족했기에 새로운 뭔가를 많이 학습해서 적용해보지는 못했다. 최대한 1, 2주차 때 쌓은 경험과 지식으..
이어서... 오늘 한 것은 다음과 같다. 옵저버 패턴 적용 컨트롤러 작성 정답 로또 번호와 구매한 로또 번호 비교 로또 결과 출력 테스트 통과 사실상 구매한 로또 번호 검증 기능을 제외하고는 모든 기능을 구현했으며, 테스트도 통과했다. 구매한 로또 번호도 사실 검증이 딱히 필요는 없는게, 이미 RandomNumberGeneratorTest 에서 1부터 45까지의 숫자 6개를 리스트로 만들어 반환하는 것의 테스트를 완료했으며, 로또 번호를 구매하는 것에 사용자가 관여하는 것은 구매 금액 입력밖에 없는데 이 구매 금액 입력의 테스트는 이미 완료했기 때문이다. 그래도 확실한게 좋으니까, 후순위에 두고 작성을 고려해야겠다. 사진에서 보다시피 엄청 많은 클래스를 작성 했는데, 문제는 개별 구현이 쉬웠던 어제의 구..
이어서... 오늘은 드디어 많은 것들을 진행했다. TDD로 여러 기능들을 구현했는데, 양으로만 보면 전체 기능의 약 60%, 중요도로 보면 50% 정도의 기능들을 구현했다. | ⬆️ ✅ 표시가 있는 기능들이 구현 완료한 기능들이다. 3주차 과제때는 기능들을 만들다가 컨트롤러를 만들어서 필요한 기능들을 추가적으로 구현했는데, 이번에는 기능들을 다 만들고 컨트롤러와 서비스에서 사용하게 해보려 한다. ( ⬆️ 과제 끝내고 와서 여기 다시 적는다. 이건 실패했다. 메인 로직에 TDD? 엄청 빡세다..) 아무래도 기능 자체로만 보면 2주차 과제의 연장선인것 같다. 구현 자체는 (아직까지는) 그렇게 어렵지 않고, 기능을 구현하기 위한 방법이 막히지 않고 떠오른다. 그래서 기능 구현을 위해 검색하는 시간이 대폭 줄었..
이어서... 오늘은 특이하게 3, 4일차를 한 포스팅 안에 작성한다. 시간이 없거나 귀찮아서 그런건 아니고, 한게 별로 없었기 때문이다. 3일차에는 이전 회고에서 말한 것처럼 뺄 수 없는 개인적인 일정으로 인해 거의 아무것도 하지 못했다. 오늘인 4일차 저녁에 처음으로 요구사항을 정독하고 간단히 설계하고, 포크했다. ** 사실 오늘 4일차 때도 **일정 때문에 그리 많은걸 하지는 못했다. 아마 이번 3주차 과제가 통틀어서 가장 시간을 적게 쓴 과제가 될 것 같다. 그래도 다행인건, 1, 2주차 때부터 클래스 분리와 패턴 사용, 테스트를 해서 조금은 익숙해져 있었기 때문에 이번 요구사항이 그렇게 어렵게 느껴지지는 않았다. 2주차 과제인 자동차 경주의 형태에서 조금의 기능만 더 추가하면 될 것 같았다. 설계..
이어서... 오늘은 아래의 것을 진행했다. 코드리뷰 그렇다. 오늘도 하루종일 코드리뷰만을 했던 것이다.. 그리고 병원도 갔다왔다... 족저근막염은 아파요 3일전에 새벽에 일어나 하루를 시작하려는데, 왼쪽 발바닥에 바늘로 찌르는 고통이 느껴졌다. 최근에는 과제 한다고 헬스도 안 갔고, 많이 걷지도 않았는데 왜? 라는 생각이 들었다. 아마 매일 10kg 짜리 가방을 매고 공부하러 왔다갔다 한게 영향을 미쳤나보다 생각했다. 그리고 그냥 그 날도 평소와 똑같이 그 가방을 매고 과제를 하러 나섰다. 이틀 전은 정말 아팠다. 걷기가 너무 힘들었다. 절뚝거리며 걸을 수밖에 없었다. 다만 과제를 마무리 해야 하기에 꾹 참았다. 어제도 똑같이 아팠다. 과제가 마무리 됐으니 치료를 받고자 집을 나섰다. 주변 사람들이 침이..
2주차가 끝나고... 벌써?? 라고 할 정도로 시간이 빠르게 흘렀다. 오늘은 2주차때 했던 것처럼 코드리뷰를 할 생각이었는데, 어제부터 갑자기 생겼던 족저근막염 + 안구건조증 정기진료 때문에 시간을 많이 사용했다 🥲 공부한다고 가방에 노트북, 패드, 노트, 키보드, 물병, 충전기가방 등등을 들고 다니니 가방 무게가 10kg가 넘었다. 이걸 몇개월동안 들고 다녀서 발바닥에 무리가 갔나보다. 족저근막염에 침이 직빵이라는 말을 듣고 한의원에 갔는데, 심해서 6번은 맞아야 한다고 카더라... 그래서 내일 다시 일반 병원에 가보기로 했다. 내일은 목발을 짚을 거 같은 느낌... 코드 리뷰 아무튼 늦게 코드 리뷰를 시작했다. 과제는 오늘 확인해보지도 못했다. 로또라고 들었는데, 자세한 내용은 확인해보지 못했다. (..
이어서... 오늘은 2주차 과제의 마지막 날이다. 오늘 한 것은 1. 리팩토링 2. 생성자 주입 3. 단위, 통합 테스트 코드 작성 이었다. 코드 작성량이 1주차보다 더 많은데도 1주차에 비해 조오금 더 여유롭게 과제를 끝내게 되었다...! 예기치 못한 오류 해결 어제 밤에 과제 제출 사이트에 테스트 통과를 확인하려고 예제 테스트를 실행했는데, 몇 번이나 해도 계속 에러가 발생했다. '예기치 못한 오류로 인하여 실행에 실패하였습니다.' 엄청 당황했다. 분명 코드는 문제가 없고, 실행도 잘 됐기 때문에 더 그랬다. 심지어 오류 이유도 알 수 없었기 때문에 더 그랬다. 원인은... 오류의 원인은 바로 테스트 파일들의 위치에 있었다. TDD 과정에서 작성한 파일들이 racingcar 폴더 내에 위치해서, 테스..
이어서... 오늘은 어제 회고록에 적힌 것 처럼, 1. 생성자 주입 사용 -> 내일 마무리 때 할 것 2. 싱글톤 또는 정적 팩토리 메서드 사용(필요하다면) 3. DTO 사용으로 Car 객체 캡슐화 지키기 4. 정규 표현식 캐싱하기(matches() 생성 비용 높음) 5. 재사용되어야 할 객체 파악해서 재사용하기 를 진행 했다. 이 중 5번은 재사용될만한 객체가 없다고 판단해서 진행할 수 없었다. 벌써 과제가 내일 하루 남았다니... 시간이 너무 빠르다. 하루종일 과제만 몰입해서 하는데도 지겹지가 않다. 정적 팩토리 메서드 패턴 정적 팩토리 메서드를 새로 학습했는데, 정적 팩토리 메서드는 해당 객체를 사용할 다른 객체에서 직접 객체를 생성하지 않아 의존성을 줄이고, 해당 객체의 캡슐화를 높이는 장점이 있..
이어서... 오늘 한 것은, 1. 완료한 것들 커밋 컨벤션 지켜서 커밋하기 2. TDD 마무리하고 메인 코드로 옮기기 3. 과제 테스트 통과하기 4. 리팩토링(진행중) 였다. 어제 회고글에서 오늘 하기로 한 것들을 기대한 만큼 해냈다. 역시 뿌듯하다. 특히 TDD 이후 과제 테스트를 원큐에 성공했을 때의 기쁨이란... 이번에도 혼자서 박수쳤다. 그리고 오늘 고민했던 내용들이 되게 많은데, 계속 의식의 흐름이 하나의 고민 -> 파생되는 다른 고민 -> 또 파생되는 다른 고민 -> 이렇게 넘어간다. 고민이 생각 날 때마다 빠릿하게 기록해놔야겠다... 완료한 것들 커밋 컨벤션 지켜서 커밋하기 TDD를 진행하며 컨트롤러 외에 모든 테스트를 완료했고, 완료된 테스트들을 test 브랜치에 전부 커밋하고 푸쉬했다. ..
이어서... 오늘은 작업을 많이 하지 못했다. 교회도 가고, 최근 너무 잠을 적게 자서(평균 4시간 수면) 잠을 몰아서 잤다. 한 12시간 안 되게 잔거 같은데, 이렇게 안 하면 정말 몸이 안 따라줄 것 같았다. 최근에는 허리 통증이 생기기 시작했다. 타이머를 설정해서 일정 시간마다 스트레칭하는 시간을 가져야겠다... 아무튼, 오늘 한 것은 딱 이거다. 1. TDD 입출력을 담당하는 InputView, OutputView와 랜덤 숫자 생성 테스트를 진행했다. InputView 입력을 받는 코드는 1주차 코드를 그대로 사용했다. 테스트 코드에서 입력값을 직접 줄 수가 없으니 미리 InputStream 에 값을 넣어주고 테스트를 했다. OutputView (코드가 길어서 사진 대신 코드를 직접 넣었다.) O..
킹효준
King Dev.