마지막 회고 [Day 16] Presentation Layer(2) 여섯 번째 섹션 중에서 제일 재밌게 학습한 날이 아닌가 싶다. 백엔드 개발자가 아니다보니 혼자 간단한 프로젝트를 만들어보고자.. 챗GPT를 스승삼아 개발했었는데 챗GPT가 항상 그렇듯 한 번에 완벽한 대답을 내주진 않는다. 챗 GPT가 HTTP 응답 메세지를 구조화하라고 알려줬지만, 정확한...
미션 @Mock, @MockBean, @Spy, @SpyBean, @InjectMocks 정리 @Mock 순수 자바 환경의 테스트 단위에서도 사용할 수 있다. 가짜 객체를 생성한다. 실제 로직은 없다. 행위에 대한 기대를 명세하고 그에 따라 동작하도록 한다. 보통 테스트 대상 클래스의 의존 객체를 대체할 때 사용한다. @MockBean 스프링 부트 환경 같...
미션 MVC 기반에서 가장 많이 사용되는 3티어 레이어별로 특징과 테스트 방법을 정리해보자! Layered Architecture 일반적으로 controller(presentation) -> service(business) -> repository(persistence) 구조로 이루어져있다. 레이어를 단계적으로 구분하는 이유는 관심사 분리 가 목적이다. p...
3주차 회고 [Day 11] 미션 Day 11일에는 테스트 코드를 직접 작성해보는 미션을 진행했다. Readable 강의에서 지뢰찾기와 스터디 카페에 대한 테스트 코드를 3개 이상의 서로 다른 클래스 & 총 7개 이상의 테스트를 작성하는 미션이었다. 객체지향으로 리팩토링 했었던 지난 미션보다는 시간이 적게 걸렸지만, 이번 미션도 여전히 생각할 거리가 너무 ...
2주차 회고 [Day 6] 리팩토링: 코드 다듬기 이번 챕터에서 제일 기억에 남는 건 '주석'이었다. 주석 사용 법은 배웠지만 좋은 주석 은 처음 알게된 개념이라 도움이 많이 됐다. 실무에서도 개발하기 급급해서 기존에 있던 주석까지 신경쓰지 않았었는데 주석과 코드는 한 몸이라 생각하고 앞으로 꼼꼼히 봐야겠다고 생각했다. 그리고 키워드 정리 시간에 지뢰찾기에...
미션 [섹션 7. 리팩토링 연습]의 "연습 프로젝트 소개" 강의를 보고, '스터디 카페 이용권 선택 시스템' 프로젝트에서 지금까지 배운 내용을 기반으로 리팩토링을 진행해 봅시다. 브랜치 링크 : https://github.com/techhan/readable-code/tree/day7 나름 해보다가 진도가 더 안나가서 제출합니다! 생각은 나름 해봤는데 객체...
1주차 회고 [Day 2] 추상과 구체 이번 챕터에서 가장 와 닿았던 키워드는 '읽기'다. 사실 코딩을 하면서 '읽기 좋은 코드'를 작성하기 보다는 별 생각 없이 '원하는 요구사항에 맞춰 개발하면 됐지'라는 생각이 커서 내 코드를 읽을 후손들은 생각지도 못한 채 개발을 했었다. 그렇다보니 강의를 듣는 내내 처음 해보는 생각들이라 시간이 많이 더뎌졌다. 추상...
미션 아래 코드와 설명을 보고, [섹션 3. 논리, 사고의 흐름]에서 이야기하는 내용을 중심으로 읽기 좋은 코드로 리팩토링해 봅시다. [as-is] public boolean validateOrder(Order order) { if (order.getItems().size() == 0) { log.info("주문 항목이 없습니다."); return fals...
미션 강의에서 안내하는 것처럼, 프로젝트를 개인 계정으로 fork하고 강의를 수강해 주세요. github 주소 : https://github.com/techhan/readable-code.git 추상과 구체" 강의를 듣고, 생각나는 추상과 구체의 예시가 있다면 한번 3~5문장 정도로 적어봅시다. 추상 : 택배를 받았다. 구체 과정 고객이 주문한다. 판매자가...
3주차 요약 : 직장인은 집중하기 힘든 코스인 걸 느꼈다..! 강의 요약은 notion에 정리해두었다. https://www.notion.so/d2e9b3e27b3348abbde60994cf627ebd Day 11. 객체지향과 JPA 연관관계 기존 코드를 리팩토링하면서 객체지향적인 개발이 무엇인지 조금이나마 체험할 수 있었다. 객체지향의 사실과 오해에서 나...