한줄코딩 발표 210613

클린 코드 10장 클래스

단일 책임 원칙.

클래스나 모듈을 변경할 이유가 단 하나뿐이어야 한다.
책임 == 변경할 이유

단일 책임 원칙을 무시한 예시

class Animal {
    constructor(name: string){ }
    getAnimalName() { }
    saveAnimal(a: Animal) { }
}

단일 책임 원칙을 지키도록 변경

class Animal {
    constructor(name: string){ }
    getAnimalName() { }
}
class AnimalDB {
    getAnimal(a: Animal) { }
    saveAnimal(a: Animal) { }
}

변경으로 부터 격리

인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리해야 한다..!

DIP

자신보다 변하기 쉬운 것에 의존하지 말고 변하기 어려운 것에 의존해라.

적용 전

적용 후

클린 코드 11장 시스템

시스템의 제작과 사용을 분리해라.

아래는 사용과 제작을 분리하는 메커니즘들.

메인 분리

팩토리

의존성 주입

ex) 스프링 프레임 워크 : 자바 DI 컨테이너를 제공.

확장.

  • 생략.

클린 코드 12장 창발성

창발성 : 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상

아래 나열은 중요도 순서.

모든 테스트를 실행하라

  • 테스트 케이스를 만들고 계속 돌려라.
  • 설계 품질이 높아짐.

중복을 없애라

  • 중복은 추가 작업, 추가 위험, 불필요한 복잡도를 의미한다.

의도를 표현하라

  1. 좋은 이름을 선택한다.
  2. 함수와 클래스 크기를 가능한 줄인다.
  3. 표준 명칭을 사용한다.
  4. 단위 테스트 케이스(예제로 보여주는 문서)를 꼼꼼히 작성한다.

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

  • SRP 를 극단으로 적용하면 득보다 실이 많음.
  • 목표 : 함수와 클래스의 크기를 작게 유지 & 시스템의 크기도(복잡성) 작게 유지.
  • 실용적인 방식을 택해라.

참고자료

10장 참고자료

https://doublem.org/SOLID_SRP_OCP/

https://server-engineer.tistory.com/228

11장 참고자료

https://velog.io/@jwkim/Clean-Code-11%EC%9E%A5-%EC%8B%9C%EC%8A%A4%ED%85%9C

https://tech-interview.tistory.com/119

https://victorydntmd.tistory.com/299

12장 참고자료

https://velog.io/@jwkim/Clean-Code-12%EC%9E%A5-%EC%B0%BD%EB%B0%9C%EC%84%B1

좋은 웹페이지 즐겨찾기