티스토리 뷰

study/클린코드

12. 창발성

pansy0319 2021. 7. 12. 03:59
반응형

[클린코드 - http://www.yes24.com/Product/Goods/11681152]

 

창발적 설계로 깔끔한 코드를 구현하자

  • 켄트 벡이 제시한 단순한 설계 규칙
    • 모든 테스트를 실행한다
    • 중복을 없앤다
    • 프로그래머 의도를 표현한다
    • 클래스와 메서드 수를 최소로 줄인다

 

단순한 설계 규칙 1: 모든 테스트를 실행하라

  • 테스트를 철저히 거쳐 모든 테스트 케이스를 항상 통과하는 시스템은 '테스트가 가능한 시스템'이다
  • 테스트가 불가능한  시스템은 검증도 불가능하다
  • "테스트 케이스를 만들고 계속 돌려라"라는 간단하고 단순한 규칙을 따르면 시스템은 낮은 결합도와 높은 응집력이라는
    객체 지향 방법론이 지향하는 목표를 저절로 달성한다
    => 테스트 케이스를 작성하면 설계 품질이 높아진다

 

단순한 설계 규칙 2~4: 리팩터링

  • 코드를 추가할 때마다 새로 추가하는 코드가 설계 품질을 낮추는지 점검하고
    낮춘다면 깔끔히 정리한 후 테스트 케이스를 돌려 기존 기능을 깨뜨리지 않았다는 사실을 확인한다
  • 이 단계에서는 소프트웨어 설계 품질을 높이는 기법이라면 무엇이든 적용해도 괜찮다

 

중복을 없애라

  • 중복은 추가 작업, 추가 위험, 불필요한 복잡도를 뜻한다
  • 깔끔한 시스템을 만들려면 단 몇줄이라도 중복을 제거하겠다는 의지가 필요하다
  • '소규모 재사용'은 시스템 복잡도를 극적으로 줄여준다
  • TEMPLATE METHOD 패턴은 고차원 중복을 제거할 목적으로 자주 사용하는 기법이다

 

표현하라

  • 코드는 개발자의 의도를 분명히 표현해야 한다
  • 개발자가 코드를 명백하게 짤수록 다른 사람이 그 코드를 이해하기 쉬워지고
    그래야 결함이 줄어들고 유지보수 비용이 적게든다
  • 표현 방법
    • 좋은 이름을 선택한다
    • 함수와 클래스 크기를 가능한 줄인다
    • 표준 명칭을 사용한다
      • 표준 패턴을 구현하는 클래스는 클래스 이름에 패턴 이름을 넣어준다
    • 단위 테스트 케이스를 꼼꼼히 작성한다
  • 노력이 제일 중요하다

 

클래스와 메서드 수를 최소로 줄여라

  • 목표는 함수와 클래스 크기를 작게 유지하면서 동시에 시스템 크기도 작게 유지하는 데 있다
  • 우선순위가 가자 낮음
  • 클래스와 함수 수를 줄이는 작업도 중요하지만, 테스트 케이스를 만들고 중복을 제거하고 의도를 표현하는 작업이 더 중요하다
반응형

'study > 클린코드' 카테고리의 다른 글

13. 동시성  (0) 2021.07.14
11. 시스템  (0) 2021.07.09
10. 클래스  (0) 2021.06.13
9. 단위 테스트  (0) 2021.06.10
8. 경계  (0) 2021.06.10
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함