기초가 뭔데?
여러분이 생각하는 코드와 프로그래밍의 기초는 무엇인가요?
코드의 기초에 대해 알아봅시다.
Swift API Programming Guide [Link]
- 한꺼번에 모두 적용하려고 하면 힘듭니다
- 한 번에 하나씩, 점진적으로 늘려갑니다
객체지향 프로그래밍
SOLID
- SRP(Single-Responsibility Principle, 단일책임의 원칙)
- 한 클래스는 단 한가지의 책임만을 가져야한다
- 책임은 변경의 이유다
- 변경을 위해 수정이 되려면 많은 내용이 수정 → 응집도가 높음
- 변경을 위한 이유가 같은 것들끼리 모이자
- 수정은 한곳에 집중되야함 → 여러 곳에 걸친 수정이 안이루어짐 → 결합도 낮음
- OCP(Open-Close-Principle, 개방-폐쇄의 원칙)
- 확장에 열려있고 변경에 닫혀있다
- 확장을 할때는 기존의 코드를 최대한 건드리지않고 확장하자
- 만약 기존의 코드를 수정하게되면 연쇄적인 수정을 하지 않을 수 있게 하자
- 기존 코드의 수정은 버그가능성이 있고, 그것을 테스트 해야한다
- LSP(Liskov Substitution Principle, 리스코프 치환 원칙)
- 자식클래스는 부모 클래스로써의 역할을 완벽히 할 수 있어야한다
- ISP(Interface Segregation Principle, 인터페이스 분리의 원칙)
- 클라이언트가 불필요하게 자신이 사용하지 않는 인터페이스에 의존하지 말아야한다
- 불필요한 인터페이스를 의존하면 상속받은 메소드를 퇴화시켜야하는 경우가 발생할 수 있음
- 불필요한 인터페이스에 의존하여 불필요한 빌드가 유발될 수 있음
- 큰 인터페이스를 작은 인터페이스들로 분리하고, 필요한 부분만 클라이언트가 취사선택하여 사용할 수 있게 해야함 → P.O.P.
- DIP(Dependency Inversion Principle, 의존성 역전의 원칙)
- 상위 수준의 모듈은 하위수준의 모듈에 의존해서는 안된다
- 구체적인 사항은 추상화에 의존해야한다
- 구체적인 것은 잘 변한다
- 추상적 인건 잘 변하지 않는다
객체지향 생활체조
- 한 메서드에 오직 한 단계의 들여쓰기만 합니다
- else 표현을 사용하지 않습니다
- 모든 원시 값과 문자열을 포장합니다
- 한 줄에 점을 하나만 사용합니다
- 이름을 줄여 쓰지 않습니다(축약 금지).