개발 일기장/TWIL
-
20.05.04 ~ 20.05.08 TWIL개발 일기장/TWIL 2020. 5. 9. 17:30
본인의 코드 스타일을 유지하자. 개행이나 아래 공백 처리하는 부분을 일관성있게 유지하기. (늘 코드리뷰를 잘해주시는 팀장님 넘나 좋음) // 마지막 변수 옆으로 소괄호, 중괄호 붙이기(개행하지말고!) public Song getSong( Singer singer, LocalDate issueDate, String keyWord) { } // try 마지막 라인에 return 쓰기 // catch 바로 아래 라인에 코드 작성 try { return foo; } catch (Exception e) { log.error("***에서 에러 발생 ", e); throw e; } // if문 아래로는 한 라인 띄우기 if () { } String message = "hello! zorba!" RestTemplate..
-
20.04.20 ~ 20.04.24 TWIL개발 일기장/TWIL 2020. 4. 26. 23:48
@Builder.Default 애노테이션 기본값을 넣어주고 싶다면 @Builder.Default를 사용하면 된다. // Before @Builder public class BookStore { // 바뀌지 않을 고정값이었기에 final을 선언했었다 private final String name = "조르바의 서점"; private String address; private int bookCount; } // After @Builder public class BookStore { @Builder.Default private String name = "조르바의 서점"; private String address; private int bookCount; } Spring RestTemplate 사용 시 모든 요..
-
20.03.30 ~ 20.04.03 TWIL개발 일기장/TWIL 2020. 4. 4. 16:01
rxJava로 retry 처리 스케줄러가 돌아가면서 외부업체 api를 날리다 실패했을 경우 retry가 필요할 것 같아, retry로직을 작성했다. 처음에 생각한 코드는 다음과 같다. publc class BookingRequestService { private final BookingApiService bookingApiService; public Booking(BookingApiService bookingApiService) { this.bookingApiService = bookingApiService; } private static final String MAX_RETRY = 3; public BookingResponse requestBooking() { int reqeustCount = 1; w..
-
20.03.23 ~ 20.03.27 TWIL개발 일기장/TWIL 2020. 3. 30. 23:50
fixture란? 그렇다면 mock(mock object)는 무엇인가? 테스트 코드를 작성할 때, 실제 DB에 가져오는 데이터나 실제 객체(인스턴스)가 아니라 직접 임의로 만들어주는 걸 다 mock이라고 생각했는데, fixture라는 개념이 있다는걸 알게 됐다. 간단하게 말하면 fixture의 목적은 반복적인 테스트를 하기 위해 잘 알고 있고(well known) 고정된(fixed) 환경 내에서 이뤄지고 있다는 걸 보장하기 위함이다. input 데이터를 세팅하거나, mock 객체의 setup, creation이다. 또는 DB의 구체적인 데이터 셋을 세팅하는 것이다. 이건 따로 포스팅을 하면 좋을 주제일 것 같아서 나중에 포스팅하고 링크를 걸어둬야겠다. 작성한 포스팅으로 추상화 신경쓰기 호출하는 쪽에서는 ..
-
20.03.16 ~ 20.03.20 TWIL개발 일기장/TWIL 2020. 3. 21. 17:48
재택근무 재택근무라고 사무실보다 일을 더 안할거라고 생각하면 정말 오해다. 오히려 쉬는시간에 대한 구분이 없어 일을 더하는 기분. 삽질을 하고 있으면 시간을 허무하게 보낸 거 같은 현타.. 배워야할 기술들 신규 프로젝트 건으로 카프카를 익혀야할 것 같다. 우선순위는 아니다. 코틀린, JPA를 학습하는게 기술적으론 우선순위다. 추가적으로 AWS를 써본적이 없어서 콘솔창을 한참을 뒤져보고 돌아다녔다. 아직까진 터미널로 작업하기보다는 GUI를 제공하는 툴이 있으면 그걸 더 활용하는 편인데, 적절한 균형을 맞춰야 할 것 같다. Unit Test와 Integration Test 사실 Unit Test는 스프링이 없어도 돌아갈 수 있어야한다. 하나의 함수에 대해 내가 지정한 input, 설계한대로의 output을 ..
-
20.03.09 ~ 20.03.14 TWIL개발 일기장/TWIL 2020. 3. 15. 23:52
refrence로 전달되는 리스트를 변형해서 값을 반환할 때는 안전하게 복사해서 사용하자. 코드 리뷰 당시 인자로 전달되는 객체를 사용하는 곳이 없어서 변경하지 않아도 됐지만, 안정적인 코드 개발을 위해 필요한 습관. 인자로 받는 객체를 다른 곳에서도 사용할 수 있는데, 인자로 받은 객체를 변경해버리면 다른 사용하는 곳에서도 변경이 일어나버리기 때문에 side effect를 생각해서 객체를 복사해서 사용하는게 낫다. public Product makeCookieBox(Ingredient ingredient) { return new Product( getCandy(ingredient), getChocolate(ingredient), // 예제 메서드 getSnack(ingredient) ); } // AS..
-
20.03.02 ~ 20.03.07 TWIL개발 일기장/TWIL 2020. 3. 7. 17:02
이번주 코드리뷰, 개발을 통해 배운 것들. 1. 가독성! private static final BASE_URL_PREFIX = "https://zorba91.tistory.com"; // Before String secondContentUrl = BASE_URL_PREFIX+"/2" // After // 문자열을 연결할 때 + 사이에 공백을 주자. String secondContentUrl = BASE_URL_PREFIX + "/2" // Before if(isMatch(args)) { // do something... } // After // if문 딱 붙이지말고, 뒤에 공백을 주자. if (isMatch(args)) { // do something... } 2. 외부 의존성을 띈 테스트는 줄이자. 통..