enum 클래스를 활용하자.
String 상수로 정의한 경우 정해진 값 외에 값이 들어와도 정적 체크가 안된다.
enum을 활용하면 정적 체크가 가능하다.
에러 로그엔 컨텍스트가 담겨야한다.
에러가 어떤 인풋에서 기타 다른 조건은 어떠했는지등을 남겨야 한다.
띡하고 에러만 남기면 어디서 부터 디버깅을 시작해야 할지 알 수 없다.
INFO 레벨 로그 또한 컨텍스트가 담겨야 한다.
컨텍스트 없는 로그는 반쪽자리다.
로그는 시간이 지나고 봐도 의미를 알 수 있어야 한다.
개발 할때 대충 간략하게 로그 메시지를 작성하게 되면 시간이 지나거나 다른 사람이 보면 이해할 수 없게 된다.
누가봐도 이 로그가 어떤걸 의미하고, 그래서 어떤 영향이 있는지 등을 알 수 있게 작성하자.
catch를 아무데서나 하지 말자
그 에러에 대한 처리 방향을 결정할 수 있는 위치에서 catch 해줘야 한다.
어떤 인터페이스가 throw 한다고 해서 무조건 그 자리에서 catch 해버리는 것은 의미 없다.
또한 에러를 먹어버리거나 임의값을 리턴한다든지 하는 경우 2차 사고를 낳고 디버깅을 어렵게 한다.
if, else if의 연속...
status를 체크하고 싶어
상태전이가 A -> B -> C 로 된다고 할때
if(currentStatus.equals(A) && nextStatus.equals('B')) return true;
if(currentStatus.equals(B) && nextStatus.equals('C')) return true;
return false;
이렇게 작성하면 보기도 어렵고 상태가 추가될때 마다 코드가 늘어난다.
일때 enum 클래스 내부에 상태전이 사전조건에 대한 것을 한 단계 추상화하여
enum Status {
Status condition;
}
if(currentStatus.equals(currentStatus.condition)) return true;
return false;
Status 클래스에만 추가하면 로직은 더 이상 건드리지 않아도 된다.
'개발' 카테고리의 다른 글
[Vue.js] masonry layout 플러그인 (0) | 2020.07.17 |
---|---|
[Vue.js] 템플릿에서 상수 접근하기 (0) | 2020.07.15 |
개발 시 패키지 구조 설정 (0) | 2020.06.24 |