외부활동21 ATDD, 클린 코드 with Spring 8기 종료 (모든 미션 수료) 과정이 2월 29일에서 일주일 연장되어 3월 6일날 모든 미션을 수료하였다. TDD 과정을 수료하고 배운걸 까먹지 않고 복리의 효과를 보기 위해 ATDD까지 수강 신청을 하였는데 정말 잘한것 같다. TDD 때는 잠을 줄이면서 까지 미션을 진행했는데 그 효과때문인지는 몰라도 ATDD 때는 잠은 푹자면서 미션을 진행했다. (그래도 힘들긴 했다 ㅎ) 어떻게 구현해야하나 고민을 하면서 고통을 느낄 때 마다 내가 성장하고 있구나!! 라고 위안을 삼았다. 이제는 테스트 코드에 많이 익숙해 졌다. 단위 테스트는 통과 했지만 막상 인수 테스트는 통과하지 못한 경우를 몸소 느끼면서 인수 테스트가 방어막 역할을 톡톡히 해주는구나 라고 느꼈다. 이번 과정에서도 다시 한번 객체지향적인 코드와 의존성을 고려한 설계에 대해서 많.. 외부활동/ATDD, 클린 코드 with Spring 8기 2024. 3. 6. 인수 테스트와 TDD 회고 Step1 구간 추가 요구사항 반영 Step1 구간 추가 요구사항 반영 PR 2주차부터 본격 적인 미션의 시작이였다. 난이도가 올랐기 때문이다. Line line = findBy(lineId); Sections sections = findBy(line); 지하철역의 리스트를 검증하는 부분에서 containsOnly를 사용했다. 아래와 같은 피드백을 받았다. 💡 같은 findBy인데 lineId를 넣으면 line이, line을 넣으면 sections가 나오는게 어색하게 느껴져요! 받는 변수타입으로 구분할 수 있지만 메소드명으로 구분해주는게 코드 가독성에 좋을 것 같아 아래와 같이 수정하였다. Line line = findLineBy(lineId); Sections sections = findSections.. 외부활동/ATDD, 클린 코드 with Spring 8기 2024. 3. 5. 인수 테스트와 E2E 테스트 회고 Step1 지하철역 인수 테스트 작성 Step1 지하철역 인수 테스트 작성 PR 미션은 총 4주차까지 있고 지하철 시스템이란 도메인을 주제로 점진적으로 발전시켜 나가면서 ATDD와 TDD를 배운다. 1주차 Step1은 RestAssured를 사용하여 지하철역 목록 조회와 삭제 API 총 2개의 테스트 코드를 작성하는 미션이다. 구현하는데 크게 어려움은 없었다. assertThat(stationsNames).hasSize(1) .containsOnly("강남역"); 지하철역의 리스트를 검증하는 부분에서 containsOnly를 사용했다. 아래와 같은 피드백을 받았다. 💡 containsExactly() 메서드를 활용해 보셔도 좋을 것 같아요 containsOnly는 순서와 중복을 고려하지 않고 명시된 값이.. 외부활동/ATDD, 클린 코드 with Spring 8기 2024. 3. 5. ATDD, 클린 코드 with Spring 8기 시작! nextstep의 TDD 17기에 이어 ATDD도 시작했다!! 공식적인 시작은 어제인 1월 22일 월요일 이였다. 이번 과정은 스프링, Jpa 기반 환경 기반으로 인수 테스트를 짜는 수업이다. TDD를 까먹기 전에 연강하는게 좋다는 생각이 들어 개설 되자마자 바로 수강신청을 했다!! TDD는 목표한 대로 기간이 끝나기 전에 모든 미션을 완료했다. ATDD도 같은 목표를 향해 달려가야겠다!! 외부활동/ATDD, 클린 코드 with Spring 8기 2024. 1. 23. TDD, 클린 코드 with Java 17기 라이브 강의 요약 (작성예정) 외부활동/TDD, 클린 코드 with Java 17기 2023. 12. 16. TDD, 클린 코드 with Java 17기 종료(모든 미션 수료) 2023년 12월 9일 토요일을 기점으로 모든 미션을 수료 하였다. 미션을 촉박하게 수행하기 싫어서 초 중반에 빠르게 달렸고, 과정이 끝나기 5일 전에 모든 미션을 수료할 수 있었다. 회사에서 코드 리뷰 문화를 직접 도입했지만 막상 스스로 코드 리뷰는 받지 못하는 환경에 있다. 코드 리뷰를 해주다 보니 나의 개발 역량에 의구심이 들었다. 반복적인 CRUD 패턴 개발 습관을 깨고 싶었고, 테스트 코드와 자바를 자바답게 사용하고 싶어 지원하게 되었다. 그리고 반드시 수료를 목표로 잡았는데 이력서에 한두줄이라도 추가하기 위해서다. 미션을 진행하면 할 수록 난이도가 어려워지고 마감 일정은 다가오니 1년 동안 지켜온 수면 패턴을 깰 수 밖에 없었다. 평일 밤, 주말에도 쉬지않고 코딩에 집중하였다. 수료 후 너무 .. 외부활동/TDD, 클린 코드 with Java 17기 2023. 12. 13. 수강신청 - 레거시 코드 리팩터링 회고 강사님이 가장 중요한 미션이라고 여긴 레거시 코드 리팩터링 미션이다. 앞의 미션들은 이 미션을 위한 연습이라고 해도 과언이 아닐 정도라고 하셨다. 앞의 미션들은 하지 않아도 레거시 코드 리팩터링 미션은 무조껀 해야 비싼 강의에서 얻어갈 수 있는 것이 있다고 말씀하셨다. 이전 콘솔 기반 미션과는 많이 다르고 Base 코드도 있다보니 코드를 어디까지 수정해도 되는지 감이 잘 잡히지 않았다. 예를 들어 Answer과 Question 객체에서 양방향 관계로 되어 있는걸 해제해도 되는지 등이다. Step1 1단계 레거시 코드 리팩터링 Step1 1단계 레거시 코드 리팩터링 Step1 미션은 Service Layer에 집중되어 있는 로직을 도메인 모델로 옮기는 미션이였다. 객체지향 적으로 코드를 작성하지 않으면 S.. 외부활동/TDD, 클린 코드 with Java 17기 2023. 11. 25. 사다리타기 - FP, OOP 회고 Step1 스트림, 람다, Optional Step1 스트림, 람다, Optional PR 평소에 자바8 문법을 사용하고 있어서 이번 Step은 별다른 어려움이 없었다. .filter(age -> age >= 30 && age age >= 30 && age 10자로 변경 되면"참여자의 이름은 5자 이하로 입력하세요." -> "참여자의 이름은 10자 이하로 입력하세요."출력할 메시지를 변경하지 않으면 불일치가 발생한다. 따라서 요구사항에 변경에 대비하여 출력할 메시지를"참여자의 이름 길이가 초과되었습니다"이런식으로 변경하는게 좋다 라는 말씀이실까요? 💡 맞아요😀 저는 그러한 작업을 일반화하여 표기하기라고 해요. 아니면 커스텀 예외의 장점을 살려 파라미터를 전달할수도있겠죠 ㅎ 리뷰어님의 입장과는 다른 생각을.. 외부활동/TDD, 클린 코드 with Java 17기 2023. 11. 25. 로또 - TDD 회고 Step1 문자열 계산기 Step1 문자열 계산기 PR 미션1의 계산기와 비슷한 요구사항이여서 쉽게 진행했다. import java.util.regex.Pattern; import java.util.stream.Collectors; public class Input { Input은 validation과 parsing을 수행하고 있는 객체다. 아래와 같은 피드백을 받았다. 💡 validation과 parsing을 수행하고 있습니다. Input 보다는 더 잘 표현할만한 명칭은 없을까요? 입력 값 검증만 했다면 -Validator 등을 붙혔겠지만 parsing 역할도 있어서 범용적인 클래스명을 붙히는게 좋다는 생각이 들었다. 그래서 클래스명을 CalculatorInputProcessor 로 수정하였다. pub.. 외부활동/TDD, 클린 코드 with Java 17기 2023. 11. 11. 자동차 경주 - 단위 테스트 회고 Step1 학습 테스트 실습 Step1 학습 테스트 PR @Test @DisplayName("성공 - 중복이 제거된 Set 크기를 확인할 수 있다.") void success_set_size_test() { //when int size = numbers.size(); int expected = 3; //then assertThat(size).isEqualTo(expected); 처음 짠 로직은 Set size를 체크시 size() 메소드를 사용해서 추출한 후에 비교 하고 있다. 아래와 같은 피드백을 받았다. 💡 size를 굳이 추출하지 않고, hasSize 로 확인하실 수 있을 것 같아요 ~ 그래서 아래와 같이 수정하였다. assertThat(numbers).hasSize(3); Step2 문자열 덧셈 .. 외부활동/TDD, 클린 코드 with Java 17기 2023. 10. 30. TDD, 클린 코드 with Java 17기 시작 드디어 Nextstep 강의 시작!! 교육 기간은 2023년 10월 30일(월) ~ 12월 14일(목) 총 6.5주간 진행된다. 현재 3년차 개발자지만 성장했다는 느낌을 받은적이 거의 없었다. 단지 CRUD 공장장이 된 기분이랄까... 주니어 개발자란 타이틀을 가지고 있을때 폭풍적으로 성장해서 원하는 목표를 이루고 싶다. 포기하지말고 기간내에 수료할 수 있게 화이팅 하잣!! 외부활동/TDD, 클린 코드 with Java 17기 2023. 10. 30. 컴퓨터 네트워크 5주차 스터디 정리 쿠키와 세션의 차이 정보 유지가 필요한 상황에서 HTTP 특징인 Stateless한 방식을 대처하기 위해 쿠키와 세션을 사용한다. 큰 차이점은 상태정보의 저장 위치이다. 쿠키와 세션 모두 클라이언트가 가지고 있지만 세션은 서버'도' 저장한다 쿠키 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용 가능하다. 특징 - Key-Value 쌍의 작은 데이터 파일 - 이름, 값, 만료일(저장 기간 설정), 경로 정보, HttpOnly 등로 구성되어 있다. - 클라이언트에 총 300개의 쿠키를 저장할 수 있다. - 하나의 도메인 당 20개의 쿠키를 가질 수 있다. - 하나의 쿠키는 4KB(=4096byte)까지 저장 가능하다. 동작방식 1. 클라이언트가 서버에 로그인 요청 2.. 외부활동/CS 면접 끝장내기 - 컴퓨터 네트워크 2기 2023. 8. 20. 이전 1 2 다음