Home [Clean code] Ch10. Classes
Post
Cancel

[Clean code] Ch10. Classes

Ch10. Classes

클래스 체계

변수 목록

  • static public var
  • private var
  • private instance var
  • public
    • 공개 변수가 필요한 경우는 거의 없음
  • function

클래스는 작아야함!

  • 첫째 규칙도 작은 크기이고, 두번째 규칙도 작은 크기이다.
    • 어느정도?
      • → 단일 책임 원칙
    • 클래스 설명은 if, and, or, but 없이 25자 내외로 가능해야함.

SRP (Single Responsibility Principle)

  • 클래스나 모듈을 변경할 이유가 하나이어야 함.
  • 객체 지향에서 중요한 개념!
  • 우리는 일반적으로 돌아가는 일에 집중을 하고, 다음 단계인 “깨끗하고 체계적인 소프트웨어” 라는 관심사로 전환하지 않음. ㅜㅜ
    • 즉, 개발 이후 리팩토링을 거쳐야만 한다!

클래스는 큰 몇 개가 아니라 작은 클래스 여럿으로 이루어진 시스템이 더 바람직함

  • 작은 클래슨느 각자 맡은 책임이 하나이며, 변경할 이유 또한 하나이어야 한다.
  • 다른 작은 클래스와 협력해서 시스템에 필요한 동작을 수행함.

응집도 (cohesion)

  • 인스턴스 변수 수가 작아야함.
  • 메서드가 인스턴스 변수를 많이 사용할 수록 응집도가 높음
  • → 클래스에 속한 메서드와 변수가 서로 의존하면서 논리적인 단위로 묶인다는 의미
  • 만약 몇몇 메서드만이 사용하는 인스턴스 변수가 많이지면 클래스를 쪼개야함!

변경하기 쉬운 클래스

  • 대다수 시스템은 지속적인 변경이 불가피함.
  • 따라서 SRP 따르는 깨끗한 시스템이 필요함
  • OCP 도 지원하도록
    • 확장에 개방적이고, 수정에 폐쇄적이어야 한다는 원칙
  • 새 기능을 수정하거나 기존 기능을 변경할 때 건드릴 코드가 최소인 시스템 구조!

DIP 의존성 역전 원칙

image

  • 변화하기 쉬운 것 또는 자주 변화하는 것에 의존하기 보다는, 변화하기 어렵고 거의 변화가 없는 것에 의존해라!!
  • → 결합도를 최소로 줄이면 DIP를 따르는 클래스가 나옴
    • 추상화에 의존해라!
    • → 추상 클래스는 테스트가 쉬움
This post is licensed under CC BY 4.0 by the author.