클래스

단일 책임 원칙(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