일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 합병 정렬
- docker
- github api
- 자바할래
- 익명 클래스
- 람다식
- Study Halle
- 브릿지 메소드
- 상속
- 바운디드 타입
- 프리미티브 타입
- 함수형 인터페이스
- raw 타입
- Switch Expressions
- 자바스터디
- System.in
- 제네릭 타입
- 정렬
- 스파르타코딩클럽
- annotation processor
- System.out
- auto.create.topics.enable
- junit 5
- System.err
- 제네릭 와일드 카드
- yield
- 항해99
- 로컬 클래스
- 접근지시자
- throwable
Archives
- Today
- Total
코딩하는 털보
클린 코드, 12 창발성 본문
소프트웨어 설계 품질을 높여주는 설계 규칙 4가지
- 모든 테스트를 실행한다.
테스트를 철저히 거쳐 모든 테스트 케이스를 항상 통과하는 시스템은 '테스트가 가능한 시스템'이다.
테스트가 가능한 시스템을 만들려고 애쓰다보면 설계 품질이 좋아진다.- SRP를 준수하는 클래스는 테스트가 훨씬 더 쉽다.
- 결합도가 높으면 테스트 케이스를 작성하기 어렵다.
그래서 테스트를 많이 작성할수록 DIP원칙을 적용하고 의존성 주입, 인터페이스, 추상화 등으로 결합도를 낮춘다.
- 중복을 없앤다.
소규모 재사용, TEMPLATE METHOD 패턴 등 중복을 제거할 수 있는 기법을 익혀야 한다.
템플릿 메서드 패턴, https://rockintuna.tistory.com/187 - 프로그래머 의도를 표현한다.
유지보수 비용을 줄이기 위해 의도를 분명히 표현하고 코드를 명백하게 해야한다.- 좋은 이름 선택하기
- 함수와 클래스 크기를 가능한 줄이기
- 표준 명칭 사용하기 (디자인 패턴 이름 등)
- 단위 테스트 케이스를 꼼꼼히 작성하기
잘 만든 테스트 케이스를 읽어보면 기능이 한눈에 들어온다. - 위 네 가지를 잘하려고 노력하기
- 클래스와 메서드 수를 최소로 줄인다.
위의 세 가지 규칙을 지키다보면 클래스와 메서드 수는 자연스럽게 많아진다.
때문에 불필요하게 그 수가 더 증가되는 것을 막아야 한다.- 무의미하고 독단적인 정책 또는 견해를 멀리하고 실용적인 방식을 택해야한다.
(예를 들어 모든 클래스의 인터페이스를 만든다던가 자료 클래스와 동작 클래스를 무조건 구분해야 한다는 등) - 클래스와 함수 수를 줄이는 작업도 중요하지만 위의 다른 작업들이 더 중요하다.
- 무의미하고 독단적인 정책 또는 견해를 멀리하고 실용적인 방식을 택해야한다.
Comments