
3. 인수 테스트 주도 개발
2022. 7. 7. 17:54
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - ATDD 개발 방법 - RANDOM_PORT를 이용한 ATDD 코드 작성 - request, response 시 DTO 사용 지향 - UI -> Application -> Domain 방향으로 의존도 설정 ATDD 라는 개념을 미션을 통해 처음 접하게 되었다 해당 테스트 코드를 통해 비즈니스 코드를 한층 더 안전하게 보호할 수 있었고 제대로 작성한다면 요구사항 문서나 테스트 케이스 문서를 대신할 수 있을 만큼 좋은 방법론이었다 하지만 실무에서 ATDD + TDD를 모두 적용하려면 굉장한 공수가 든다고 한다 대부분의 회사에서는 ATDD를 사용하지 않기 때문에 본격적으로 사용하기 보다는 뒤에서 정리하게 될 내용인 코드의 리팩토링이 필요한 경우 인수테스트를 작성할 것 같다 ..

2. JPA
2022. 7. 7. 17:25
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - JPA 코드 활용법 - 영속성 컨텍스트 이해도 상승 - 테스트 코드 트랜잭션에 대한 이해도 상승 8개의 미션 중 가장 많은 학습시간을 필요로 했던 미션이었다 JPA를 사용해본적이 없는 나로써는 미션의 내용만으로는 이해하고 코드를 작성하기가 어려웠고 혹시나 해서 듣고있었던 김영한님의 인프런 강의가 큰 도움이 되었다 :) 하지만 완강한 상태가 아니었기 때문에ㅜ 빠르게 강의를 들어가며 이론적인 내용을 학습하고 코드의 대한 부족한 부분을 구글을 통해 학습하며 미션을 진행했다 이번 미션을 통해 JPA를 어떤식으로 사용해야하는지 많이 배웠다 어서 실무에서 사용해보고 싶다 :) Code / Feedback 🚀 1단계 - 엔티티 매핑 https://github.com/next-ste..

1. 로또 - TDD
2022. 7. 7. 16:40
개발 교육/우아한 테크캠프 Pro
미션 후기 미션을 통해 배운 점 - 객체지향 생활 체조 원칙을 통한 클린코드 작성 - TDD 사이클을 준수하며 개발 - 객체지향적 설계 (도메인 로직에 집중) - 인스턴스 생성 시 static 생성 고민해보기 - 고정 값 상수 사용, 일급 컬렉션, 원시값 포장 - 객체/메서드 생성 시 책임에 대한 고민 TDD 사이클을 준수하며 개발한 경험은 사실 처음이었다 테스트 코드 작성도 프리 코스를 통해 맛보기 정도로 익혔을뿐 제대로 작성하기엔 많이 부족한 상태였다 첫번째 미션을 통해 테스트 코드 작성에 대한 자신감을 어느정도 얻을 수 있었고 뒤에 계속되는 미션들에서 많은 도움이 되었다 :) 모든 메서드의 테스트 코드를 네이밍 작업에 많은 신경을 썼고, 도메인 중심의 설계 및 구현이 되도록 많은 노력을 했다 이번 ..

0. 우아한 테크캠프 Pro를 시작하며
2022. 7. 7. 15:10
개발 교육/우아한 테크캠프 Pro
신청 과정 올해 상반기에 Nextstep에서 진행하는 우아한 테크캠프 Pro 4기에 지원했다 1차, 2차 온라인 프리코스를 통해 최종 합격한 60명만 교육에 참가할 수 있었기에 조금 걱정스러웠지만 꼭 참가하고싶은 교육이었기에 도전했다 우선 이 교육을 수강하고 싶었던 가장 큰 이유는 연차에 대한 부담이 느껴져서 였다 연차가 쌓여갈수록 회사에서 나에게 기대하는 스펙은 높아져만 가는데 개발자로써 성장하지 못한다는 기분이 들었다 업무 경험을 통해 얻을 수 있는 부분은 한계가 있었고, 새로운 지식들에 대해서는 경험이 필요했다 우테캠 프로가 이 부분을 어느정도 충족해 줄 수있는 교육이라고 생각했다 다행히 4기 교육 인원으로 선발되었고 9주간 정말 열심히 진행했다 :) 일정상 미션을 하면서 블로그 작성까지 같이하는건..

클린코드 - 8.경계
2022. 7. 6. 21:00
개발 서적/클린코드
1. 외부 코드 사용하기 시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다 개발하다 보면 패키지나 오픈 소스를 사용하게 되는데 이런 소스를 제공하는 입장에서는 더 많은 환경에서 돌아갈 수 있도록 적용성을 넓히려고 애쓴다 하지만 사용자 입장에서는 자신의 요구에 집중하는 인터페이스를 바라게 된다 이런 차이에서 경계가 발생한다 java.util.Map 을 예로 들어보자 Map은 마음만 먹으면 사용자는 어떤 객체 유형도 추가하거나 삭제할 수 있다 Map을 만들어서 여기저기 넘긴다고 가정한다면 어디서든 삭제나 추가가 가능하다는 문제가 생긴다 또한 Map 인터페이스가 변경될 경우 수정할 코드 양이 상당히 많아진다 Map sensors = new HashMap; Sensor s = sensors.get..

클린코드 - 7.오류 처리
2022. 7. 5. 00:41
개발 서적/클린코드
1. 오류 코드보다 예외를 사용하라 public class DeviceController { ... public void sendShutDown() { DeviceHandle handle = getHandle(DEV1); // 디바이스 상태를 점검한다. if (handle != DeviceHandle.INVALID) { // 레코드 필드에 디바이스 상태를 저장한다. retrieveDeviceRecord(handle); // 디바이스가 일시정지 상태가 아니라면 종료한다. if (record.getStatus() != DEVICE_SUSPENDED) { pauseDevice(handle); clearDeviceWorkQueue(handle); closeDevice(handle); } else { logger..
H2 DataBase 초기 접속
2022. 6. 9. 15:49
개발 지식/Etc.
데이터베이스 파일 생성 방법 JDBC URL: jdbc:h2:~/DB이름 최초 접속 시 파일 생성 반드시 url에 세션키 값이 있어야함! JDBC URL: jdbc:h2:tcp://localhost/~/DB 이름 이렇게 접속 다음 접속 부터 네트워크 모드로 정상 접속 가능
spring-boot-devtools 라이브러리
2022. 6. 9. 15:39
개발 지식/Memo
spring-boot-devtools 라이브러리를 사용하면 캐시 삭제 등 개발 시 유용한 기능들을 제공한다 가장 대표적인 예로 thymeleaf 등 개발 시 동적 값을 변경할 경우 서버를 재시작해야하는데 devtools 를 사용하면 리컴파일로 간단하게 처리할 수 있다 gradle 기준으로 작성 dependencies { .... implementation 'org.springframework.boot:spring-boot-devtools' .... } 라이브러리 추가 후 th:text 부분의 문구를 변경했을 경우 기본 문구 다시 컴파일 후 새로고침을 하면 바로 적용되는 것을 확인할 수 있다!

클린코드 - 6.객체와 자료 구조
2022. 6. 5. 00:18
개발 서적/클린코드
1. 자료 추상화 public class Point { public double x; public doulbe y; } public interface Point { double getX(); double getY(); void setCartesian(double x, double y); double getR(); double getTheta(); void setPolar(double r, double theta); } 두 클래스를 비교해보자 2차원 점을 표현하는 클래스인데 위 클래스의 경우 외부로 모두 노출되지만, 아래 클래스의 경우 구현을 완전히 숨긴 형태이다 또한 접근 시 좌표값을 읽을 때 위 클래스의 경우 각각 개별적으로 읽게 되지만 아래 클래스의 경우 두 값을 동시에 설정해야한다 구현을 감추기 위..

클린코드 - 5.형식 맞추기
2022. 6. 4. 16:32
개발 서적/클린코드
1. 형식을 맞추는 목적 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무! 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다 처음 잡아 놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다 2. 적절한 행 길이를 유지하라 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다 소스도 신문 기사처럼 위에서 아래로 읽으며 첫 문단에 전체 기사의 내용을 요약하고 아래로 읽어 내려가면서 날짜, 이름, 발언, 주장 등 세세한 사실 알게된다 빈 행을 넣어 개념을 분리해야 한다 예를 들어 메서드와 메서드 사이에 빈 행이 없다면 가독성이 굉장히 떨어질 것 이다 반대로 같은 개념의 코드라면 공백 없이 밀접한 상태로 코드를 작성하는 것이 더 이해하기 좋다 private..