-
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. 외부 의존성을 띈 테스트는 줄이자.
통합 테스트 성격을 띈 테스트들은 따로 관리하고 유닛 테스트는 외부 의존성을 줄이자.
- 이건 내 생각 : 스프링 프레임 워크에 의존한 테스트를 줄이면 좋을 것 같다. 예를 들면, Bean의 주입없이 테스트 가능하도록 만들자. Mock을 활용하면 되니까
외부 라이브러리를 사용을 한다는 의미는 그것을 이미 신뢰하고 사용한다는 의미이기 때문에 라이브러리의 기능이 정상적으로 동작하는지 확인하는 건 우리가 아니라 라이브러리가 지녀야한다.
- 이는 내가 Redis 값을 가져오는 라이브러리를 통해 개발 Redis에 값을 잘 넣었는지 가져오는지 테스트코드를 작성했다가 받은 피드백이다.
3. 불필요한 객체 생성 비용 줄이기
// Before public void findArtists(String jsonRequest) { ObjectMapper objectMapper = new ObjectMapper(); Map<String, String> requestParam = objectMapper.readValue(jsonRequest, HashMap.class); // do something... } // After // 지역 변수로 선언해두면 매번 객체를 생성하는데, objectMapper의 경우는 동일한 객체를 계속 사용해도 상관없기 때문에 전역변수로 선언. // 이로써 불필요한 객체 생성을 줄일 수 있다. public class ArtistServiceImpl implements ArtistService { private ObjectMapper objectMapper = new ObjectMapper(); public void findArtists(String jsonRequest) { Map<String, String> requestParam = objectMapper.readValue(jsonRequest, HashMap.class); // do something... } }
머리로는 알고 있는데 왜 코드를 짤 때 이런 부분들이 안 떠오르는 걸까.... ㅠ
4. 팩토리 패턴 활용
수퍼타입의 객체를 상속 받은 서브타입 객체가 많고, 유연하게 사용하고 싶은 객체를 바꾸고 싶을 때, 팩토리 패턴을 활용하면 편하다.
- 필요한 객체를 부르기 위한 인자(argument) 하나로 원하는 객체를 가져올 수 있었다.
- 공부한 것들을 실전에 적용해보니 재밌었다. '더존' 재직 시, 빌더패턴의 추억 ㅠ
'개발 일기장 > TWIL' 카테고리의 다른 글
20.03.30 ~ 20.04.03 TWIL (0) 2020.04.04 20.03.23 ~ 20.03.27 TWIL (0) 2020.03.30 20.03.16 ~ 20.03.20 TWIL (0) 2020.03.21 20.03.09 ~ 20.03.14 TWIL (0) 2020.03.15 TWIL이란? (0) 2020.03.07