kok202
[2019.02.09] 클린코드 (오류, 경계)

2019. 2. 9. 12:43[공부] 독서/클린 코드

오류


if문에 의한 오류처리를 피해라.

try catch finally를 이용해라.


try catch finally는 일종의 트랜잭션처럼 여겨야한다.

try 에서 뭔짓을 하던 오류가나면 catch에서 롤백해줘야한다,


미확인 예외 처리를 안하면 OCP를 위반한다

미확인 예외 처리도 해줘라.


오류처리 메카니즘이 동일한 오류들이 있다면 이를 Wrapper 클래스로 묶는 것을 고려해라


특정 객체를 조회해서 받아와야하는 함수가 있을 때 오류가 발생하면 null 을 반환하게 하지마라

null 을 반환하게해서 오류처리하는 것보다는 empty 객체를 반환해서 정상동작은 되게해라

이렇게 만들어진 empty 객체는 특수 사례 객체라고 부른다.


마찬가지로 null을 전달하지마라

if(object1 == null)

throw InvalidArgumentException("argument is null");

이렇게 사용하는 것보다 아래의 코드를 이용해서 간결성을 높여라

assert object1 != null : "object1 is null";





경계


경계 인터페이스 : 외부 라이브러리를 사용하기 위해 사용해야하는 인터페이스들


Map과 같은 경계 인터페이스를 여기저기 노출, 넘기지말라


어떤 외부 API를 학습했다면 클래스를 하나 만들어서 경계 인터페이스를 몰라도 사용할 수 있게 만들어라


다른 팀과 협력할 때 아직 경계 API 가 정의 되어있지 않다면 

1. 우리 팀이 바라는 인터페이스를 준비한다.

2. 우리 팀이 바라는 인터페이스의 어댑터를 준비한다

3. 우리 팀이 바라는 인터페이스로 작업한다.

4. 다른 팀이 인터페이스 API를 만들고 난 후.

3. 다른 팀의 인터페이스 API에 2번에서 준비한 어댑터를 연결한다.