본문 바로가기

전체 글172

[일일 회고] 22.02.16~17 - DCI 패턴의 테스트 코드 적용하기!, 개발에 정답은 없다. 그래서 ~? 14일에 이어 어제 오늘도 사다리 게임 Step 3, Step 4를 구현했다. 프로젝트를 하며 피드백, 기술 적용, 생각을 정리한다. ✅ 역할과 책임을 분명히 하기 MVC 패턴으로 프로젝트 구조를 잡았다. 문제는 InputView에서 메시지 출력을 위해 OutputView의 메서드를 InputView에서 사용했다. 두 사이의 결합도가 높아졌다. InputView에서 OutputView를 사용해도 문제없지만, 사용자 입력을 받는 것은 InputView의 책임이니 InputView에서만 모든 일이 끝나도 문제없어 보인다. 정답은 없겠지만 설계 시 역할과 책임을 분명히 해야겠다는 경험을 쌓았다. ✅ 처음부터 완벽한 설계란 불가능하다. 미래 지향적으로 코딩하지 말자(YAGNI) 모든 상황에 맞진 않겠지만 현재 .. 2022. 2. 17.
private 메서드도 테스트를 해야 할까? (private 메서드 테스트 하고 싶을 때...) ✅ 👃 해당 글은 페이스북 그룹 javawocky 박성철 님의 글을 시작으로 하단 Reference을 참고하여 요약했습니다. 자세한 내용은 링크를 참고해주세요 public 메서드의 테스트를 작성하다 보면 private 메서드도 테스트하고 싶은 마음이 들 때가 있다. public 메서드 테스트가 충분하지 않아 보인다. 테스트가 적거나 불안해 보인다. 하지만 보통 public 메서드를 테스트한다면 연결(종속)된 private 메서드도 이미 테스트했다고 생각한다. 그렇다면 public 메서드만 테스트하면 될까? private 메서드도 테스트를 해야 할까? 정답은 없다. 현재 프로그래밍하는 시점의 context을 고려하자. 그렇다. 정답은 없다. 그래도 3가지 상황을 통해 private 메서드의 테스트 여부를 알아보자.. 2022. 2. 16.
[일일 회고] 22.02.14~15 - 좋은 코드와 Git 이번 주부터 코드 스쿼드 백엔드 과정이 본격적으로 시작됐다. 프로젝트 공개도 가능하다. 이번주는 간단하게 사다리 게임을 구현한다. 객체지향, 단위 테스트, 리팩토링을 한다. 총 5단계로 이루어져 있으며 하루에 1단계씩 진행한다. 어제오늘 2단계까지 진행했다. (프로젝트 링크 : Step2 Code) 과정 속에서 좋은 코드 조각과 Git에 배울 수 있었다. 좋은 코드 조각 작년🧘🏻‍♂️ 유지 보수하기 좋은 코드, 앞으로의 수련 를 통해 생각을 정리했다. 좋은 소프트웨어, 코드를 만드는 개발자가 되고 싶었고 같은 생각을 가지고 있는 동료를 만나고 싶었다. 우연히 '코드 스쿼드'를 알게 되었고 현재 이곳에서 공부하고 있다. 좋은 코드는 무엇일까? 정답은 없다고 생각한다. 주어진 상황에 따라 다를 수 있으며 주.. 2022. 2. 15.
[주간 회고] 22.02. 2주차 🐳👯‍♂️🍸 일기 형태로 작성되었습니다. 월, 화요일 22.02.07~08 - 도커 컴포즈, DB, JDBC 🐳 팀원들과 함께 알고 있는 것을 공유했다. bluk insert 방법들을 함께 나눌 수 있어서 유익했다. 앞으로도 배운 것을 나누고 토론해야겠다. 모르는 것을 내게 물어봐주는 팀원들이 많아졌다. 내겐 좋은 일이다. 함께 성장할 수 있기 때문이다. 하지만 나의 한계와 부족함을 느낀다. 이럴 때일수록 모르는 것은 모른다고 이야기해야겠다. 지식을 추정하지 말고 부족함을 인정하자. 모르는 것을 채우고 나누자. DB를 깊이 공부해야겠다. 수요일 22.02.09 - 커뮤니케이션과 짝 프로그래밍 커뮤니케이션은 개발뿐만 아니라 삶에도 중요하다. 두 가지를 잊지 말자. - 상대방을 짐작하지 않기 : 예를 들어 A란 사람이 .. 2022. 2. 13.
[일일 회고] 22.02.10~11 - 웹클라이언트, 소켓 프로그래밍 📚TIL 웹브라우저와 동일하게 작동하는 간단한 웹 클라이언트를 구현했다. DNS Lookup으로 URI에서 IP 주소를 알아내고 간단한 Socket 프로그래밍을 통해 서버와 HTTP 통신을 하였다. socket()과 입출력 스트림을 제외하고 HTTP 표준 라이브러리 없이 직접 구현했다. ✅ 구현해보니 디자인 패턴이었다? 처음 Client와 Request, Response 객체를 설계했다. 특히 Request 객체 생성 시 많은 매개변수를 넣어 한 번에 생성하고 싶었다. (uri, get, header 들) 처음엔 매개변수 별 생성자를 많이 만들었다. 하지만 header의 개수가 정해진 것이 아니었기 때문에 문제가 있었다. 그래서 처음에 빈 객체를 리턴하고 이를 세터 메서드로 초기화했다. 그렇게 구현하던 .. 2022. 2. 11.
생성자에 매개변수가 많다면 빌더 패턴을 써볼까?! (HTTPClient와 lombok @Builder) 🧰 이 글은 책 이펙티브 자바 3판 Item 2와 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 목차 1. 점층적 생성자 패턴(Telescoping Constructor pattern) 2. 자바빈즈 패턴(JavaBeans pattern) 3. 빌더 패턴(Builder pattern) - 빌더 패턴 사용 예 : java.net +a) lombok의 @Builder를 사용한 빌더 패턴 사용 +a) 다른 언어의 빌더 패턴 한 줄 요약 : 생성자에 매개변수가 많다면 빌더 패턴(Builder pattern)을 써보자. 이전 글 객체 생성할 때 '생성자' 대신 '정적 팩토리 메서드'를 써볼까? 🏭 에서 생성자 대신 정적 팩토리 메서드를 사용하면 좋은 이유를 알아봤다. 그렇다면 생.. 2022. 2. 11.