클래스
단일 책임 원칙(SRP) 지키기
하나의 클래스는 하나의 책임만 갖도록 설계한다.
클래스도 작아야 가독성과 유지보수 측면에 이점이 있다.
// as-is
class Store { // Store 클래스가 많은 역할을 혼자 수행한다.
func cummunicateUser() { }
func manageProducts() { }
func manageMoney() { }
}// to-be
class CounterManager {
func communicateUser() { }
}
class ProductManager {
func manageProducts() { }
}
class Owner {
func manageMoney() { }
}
class Store {
let counterManager: CounterManager
let productManager: ProductManater
let owner: Owner
func sellProduct() {
counterManager.communicateUser()
// code
}
// code...
}응집도를 높이자.
응집도는 클래스의 변수와 메서드가 얼마나 유기적으로 엮여있는지를 나타내는 지표이다.
응집도가 높을수록 클래스의 메서드는 인스턴스 변수를 많이 사용한다.
응집도가 낮을수록 클래스의 메서드는 인ㅅ턴스 변수를 적게 사용하거나 사용하지 않는다.
변경하기 쉽게 만들자 (open closed)
다형성과 연결되는 부분이다.
새 기능을 수정하거나 기존 기능을 변경할 때, 코드의 변경으 최소화하는 것이 중요하다.
일반적으로 클래스(객체)는 구현과 추상으로 나뉜다.
구현(Concrete) : 실제 동작하는 구체적 코드
추상 (Abstract) : 구체적인 기능을 개념화한 코드
변경하기 쉽게 설계하기 위해서, 추상화를 통해 구체 클래스에 의존하지 않고, 추상 클래스에 의존하도록 코드를 작성하는 것이 중요하다.
Last updated