대범하게

[클린코드] 7일차 - 오류 보단 예외처리, 그리고 클린코드로 인한 중복 알레르기 본문

알아두면쓸데있는신기한잡학사전/독서일지

[클린코드] 7일차 - 오류 보단 예외처리, 그리고 클린코드로 인한 중복 알레르기

대범하게 2023. 10. 31. 00:21
반응형

[클린코드] 7일차 - 오류 보단 예외처리, 그리고 클린코드로 인한 중복 알레르기

클린코드 7일차 (p. 57~66(3장) )

 

들어가기 전..)  벌써 클린코드 고생길이 보이는 중 .. 다시 열심히 해야지. 작심삼일도 안 끊기면 된다. 

3 함수

9. 오류 코드보다 예외를 사용하라!

- 명령 함수에서 오류 코드를 반환하는 방식은 명령/조회 규칙을 미묘하게 위반한다.

- 오류 코드 대신 예외를 사용하면 오류 처리 코드가 원래 코드에서 분리되므로 코드가 깔끔해진다.

if 문으로 오류 처리한 코드 보다 try catch로 예외처리를 한 코드가 더 가시성이 높고, 코드 분리도 된다.

 

1) try/catch 블록 뽑아내기

- try/catch 블록을 함수로 뽑아내는 편이 좋다.

// 모든 오류 처리
public void delete(Page page){
	try {
    	deletePageAndAllReference(page);
    } catch (Exception e){
    	logError(e);
    }
}

// 실제로 페이지를 제거하는 함수 -> deletePageAndAllReference는 예외처리를 하지 않음.
private void deletePageAndAllReference(Page page) throws Exception {
	deletePage(page);
   	registry.deleteReference(page.name);
    configKeys.deleteKey(page.name.makeKey());
}

// 예외 처리 함수
private void logError(Exception e){
	logger.log(e.getMessage());
}

 

2) 오류 처리도 한 가지 작업이다.

- 함수는 '한 가지' 작업만 해야 한다. 

- 오류 처리도 '한 가지' 작업에 속한다. 즉, 오류 처리하는 함수는 오류만 처리해야한다.

 

3) Error.java 의존성 자석

- 오류 코드를 반환한다는 이야기는, 클래스든 열거형 변수든, 어디선가 오류 코드를 정의한다는 뜻이다.

- 아래와 같은 클래스는 의존성 자석(magnet)이다. 

- 다른 클래스에서 Error enum을 import해 사용해야함. + 새 오류 코드를 추가하는 대신 기존 오류 코드 재사용.

public enum Error {
	OK, 
    INVALID,
    NO_SUCH,
    LOCKED,
    OUT_OF_RESOURCES,
    WAITING_FOR_EVENT;
}

 

10. 반복하지 마라

-코드가 길어지고 알고리즘이 변하면 반복한 코드 모두를 손봐야 한다.

- 이러다 한 곳을 빠뜨리게 되면 오류가 발생할 가능성이 쫙쫙 올라간다.

- 중복은 소프트웨어에서 모든 악의 근원이다.

 

11. 구조적 프로그래밍

- 함수는 return 문이 하나여야 한다.

- 루프 안에서 break나 continue를 사용해선 안 되며 goto는 절대로 안.된.다.

 

12. 함수를 어떻게 짜죠?

- 글짓기와 비슷하다.

- 초안을 먼저 작성하라. (서투르고 어수선해도 괜찮다. + 서투른 코드를 빠짐없이 테스트하는 단위 테스트 케이스도 만든다,) 

- 그 다음 코드를 다음고, 함수를 만들고, 이름을 바꾸고, 중복을 제거한다.

- 그 다음 메서드를 줄이고, 순서를 바꾼다. 이 와중에 항상 단위 테스트를 통과한다. 

 

 

결론

- 프로그래밍 기술은 언제나 언어 설계의 기술이다.

- 여기서 설명한 규칙을 따른다면 길이가 짧고, 이름이 좋고, 체계가 잘 잡힌 함수가 나오리라.

- "하지만 진짜 목표는 시스템이라는 이야기를 풀어가는데 있다는 사실을 명심하기 바란다."

 

 

개인적인 견해 

함수 파트에서 생각보다 직관적인(?) 유용한 예시가 없었던 것 같아 아쉽다. 정확하게 말하면 예시는 괜찮았지만 흥미를 불러일으킬만한 부분이 없다고 해야할까 ? 클린코드를 6일 정도 읽어보니 정말 중복만 보면 중복 알레르기가 생기는 듯하다. 거의 반 정리, 반 일기가 된 클린코드 정리 ! 애정한 하는 친구의 포스팅도 중복과 관련된 내용이라 댓글 쓰면서 너무 클린코드 생각(?)이 났다.. ㅎㅎ

https://velog.io/@mxnzx/SpringBoot-.filter-%EC%82%AC%EC%9A%A9%EC%9C%BC%EB%A1%9C-%EC%BF%BC%EB%A6%AC-%ED%95%9C-%EB%B2%88%EB%A7%8C-%EB%82%A0%EB%A6%AC%EA%B8%B0

 

Comments