책너두 5기 42일차

로버트 C. 마틴의 클린코드 p. 388~ p.395

내용정리

17. 냄새와 휴리스틱

일반

26. 정확하라

  • 코드에서 뭔가를 결정할 때는 정확히 결정한다. 결정을 내리는 이유와 예외를 처리할 방법을 분명히 알아야 한다.

  • 코드에서 모호성과 부정확은 의견차나 게으름의 결과다.

    • 검색 결과 중 첫 번째 결과만 유일한 결과로 간주하지 마라.

    • 부동 소수점으로 통화를 표현하지 마라.

    • 갱신할 가능성이 희박하다고 잠금과 트랜잭션 관리를 건너뛰지 마라.
    • List로 선언할 변수를 ArrayList로 선언하지 마라.
    • 모든 변수를 protected로 선언하지 마라.

27. 관례보다 구조를 사용하라

설계 결정을 강제할 때는 규칙보돠 관례를 사용한다. 명명 관례보단 구조 자체로 강제하라.

28. 조건을 캡슐화하라

부울 논리는 이해하기 어려우니 조건의 의도를 분명히 밝히는 함수로 표현하라.

29. 부정 조건은 피하라

가능하면 긍정 조건으로 표현하라.

30. 함수는 한 가지만 해야 한다

한 함수 안에 여러 단락을 이어 일련의 작업을 수행하게 하지 마라.

31. 숨겨진 시간적인 결합

시간적인 결합을 숨겨서는 안된다. 함수가 호출되는 순서를 명백히 드러내라.

32. 일관성을 유지하라.

코드 구조를 잡을 때는 이유를 고민하고 그 이유를 코드 구조로 명백히 표현하라.

33. 경계 조건을 캡슐화하라

경계 조건은 한 곳에서 별도로 처리한다. 여기저기에서 처리해서 빼먹거나 놓치지 않는다.

34. 함수는 추상화 수준을 한 단계만 내려가야 한다

함수 내 모든 문장은 추상화 수준이 동일해야 한다. 그 추상화 수준은 함수 이름이 의미하는 작업보다 한 단계만 낮아야 한다.

35. 설정 정보는 최상위 단계에 둬라

추상화 최상위 단계에 둬야 할 기본값 상수나 설정 관련 상수를 저차원 함수에 숨겨서는 안된다. 대신 고차원 함수에서 저차원 함수를 호출할 때 인수로 넘긴다.

36. 추이적 탐색을 피하라

한 모듈은 주변 모듈을 모를수록 좋다. A가 B를 사용하고 B가 C를 사용한다 하더라도 A가 C를 알아야 할 필요는 없다. 이를 디미터의 법칙(Law of Demeter) 혹은 ‘부끄럼 타는 코드 작성(Writing Shy Code)’이라 한다. 내가 아는 모듈이 연이어 자신이 아는 모듈을 따라가며 시스템 전체를 휘저을 필요가 없다.


읽고나서

추상화 이야기가 잘 와닿지 않는다. 시간을 들여 추상화에 대해 공부해야겠다.