SOLID

SOLID와 타입 경계

원칙을 외우기보다 클래스와 인터페이스가 왜 바뀌는지, 의존성이 어느 방향으로 흐르는지 확인한다.

SRP

하나의 변경 이유만 가진다.

OCP

확장에는 열고 수정에는 닫는다.

LSP

하위 타입이 상위 계약을 깨지 않는다.

ISP

큰 인터페이스를 역할별로 나눈다.

DIP

구현보다 추상에 의존한다.

추상화 안정성: 타입을 추가할수록 코드가 덜 흔들리면 유효한 추상화이고, 더 많은 수정이 필요하면 경계가 잘못된 것이다.