ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.