하나의 컴포넌트는 하나의 일만 수행해야 하며
그 컴포넌트의 모든 코드는 하나의 일을 수행하는데에 집중해야한다
하지만 정확히 말하면 컴포넌트를 변경 하는 이유는 하나여야된다 가 더욱 정확하다
이 원칙을 지키게 된다면 좋은 점은 컴포넌트의 책임 영역이 명확하기 때문에
한 기능을 수정했을 때 다른 기능도 수정해야하는 연쇄 작용을 일으키지 않는다.
그렇기 때문에 이 원칙을 지키면 가독성, 유지보수성을 챙길 수 있다
확장에는 열려있고 수정에는 닫혀있어야한다
풀어말하면 확장을 할 때 기본 구성 요소를 변경하지 않아야 하고
수정을 할 때도 하나를 수정했을 때 다른 요소도 수정하는 연쇄 작용이 일어나지 않아야 한다
어느 한 함수의 매개변수가 있다고 할 때 그 매개변수의
상위 타입을 하위 타입으로 치환했을 때에도 잘 작동해야된다는 원칙
클라이언트에서 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙이다
그니까 인터페이스를 이제 필요한 것만 만들어서 잘 구현해서 사용하자