각 원칙에 한 줄 설명과 예시는 다음과 같다.
Single Responsibility
객체는 하나의 기능만 수행해야 한다.
Open-Closed
소프트웨어 엔티티는 확장에 열려있고 변경에 닫혀있어야 한다.
Liskov substitution
프로그램의 정상 동작을 유지하면서 클래스 S 를 따르는 객체를 클래스 S 의 서브클래스 T 를 따르는 객체로 치환할 수 있어야 한다.
Interface segregation
사용하지 않는 UI 기능을 구현하지 않도록 주의하라
Dependency inversion
추상화한 것이 디테일에 의존하지 않도록 작성해야 한다.
ref: https://www.raywenderlich.com/21503974-solid-principles-for-ios-apps
ref: https://medium.com/@nishant.kumbhare4/solid-principles-in-swift-73b505d3c63f