[TIPS] Push 전 체크리스트

나르·2022년 12월 16일
0

개발일기

목록 보기
8/14
post-thumbnail

null check

CollectionUtils.isEmpty()

public abstract class CollectionUtils {
    public CollectionUtils() {
    }

    public static boolean isEmpty(Collection<?> collection) {
        return collection == null || collection.isEmpty();
    }
    ...
}

내부적으로 isEmpty를 사용 중인데, null check도 같이 하고잇다.
그 말인 즉슨 isEmpty는 null safe 하지 않다는 뜻?

List.isEmpty()

abstract collection 의 구현체

    public boolean isEmpty() {
        return size() == 0;
    }

nullsafe 하지 않다

스트링이나 컬렉션의 null을 체크할때는, utils를 활용해보자.

이것도 common 의 utils가 있고, spring의 utils가 있는데
common 은 isNotEmpty를 지원한다.

    /**
     * Null-safe check if the specified collection is not empty.
     * <p>
     * Null returns false.
     * 
     * @param coll  the collection to check, may be null
     * @return true if non-null and non-empty
     * @since Commons Collections 3.2
     */
    public static boolean isNotEmpty(Collection coll) {
        return !CollectionUtils.isEmpty(coll);
    }

implement class 대신 Interface 로 받기

구현체의 메서드를 사용할 필요가 없다면, HashMap이나 ArrayList 대신 Map, List 등의 Collection은 인터페이스로 받자.
다른 타입의 구현체로 변경했을 때 공수를 줄여줄 것이다.

Why define a Java object using interface rather than implementation

getter 사용 시 주의

게터를 쓰는 로직이 있다면 Assert.notNull 혹은 filter(Object::notnull) 등을 이용해 먼저 nullcheck를 해두자
추후 .toString 등의 코드가 추가됐을 때 NPE가 발생하는 것을 막을 수 있다.

logging 알뜰살뜰 활용하기

log.debug("API >>>>" + api + " request >>>>" + request) ....

System.println.out 을 쓰면 안되는 것은 인제 모두들 알죵
그런데 Sl4j 등을 사용해 로그를 찍는다 한들, 위와 같이 문자열 연산을 하면 쪼오금 아쉽다.
일반적으로 가용 로그레벨 체크 > .debug 가 가용하다면 로그 출력
이 되어야하지만, 위같은 경우는 로그레벨 체크 이전에 스트링 연산이 먼저 일어나 불필요한 작업을 수행할 수도 있다.

SLF4J Logger 사용법 & 잘못된 사용법

profile
💻 + ☕ = </>

0개의 댓글