Design Smells
소프트웨어 디자인에서 나타나는 부정적인 특징 또는 증상을 가리키는 개념이다.
- Rigidity(경직성)
- 소프트웨어 시스템이 변경하기 어렵다는 것을 나타낸다.
- 경직성이 높으면 비교적 간단한 변경 사항에도 큰 작업량이 필요할 수 있다.
- Fragility(취약성)
- 시스템의 한 부분을 수정할 때 관련이 없는 다른 부분에 예상치 못한 영향을 미치는 경우를 가리킨다.
- 이로 인해 수정한 코드 이외에도 다른 부분을 검증해야 하므로 코드의 신뢰성이 떨어진다.
- 취약성이 높은 코드는 유지보수가 매우 어려워진다.
- Immobility(부동성)
- 코드의 재사용이 어렵다는 것을 의미한다.
- 코드를 분리하여 다른 곳에서 재사용하려고 할 때 어려움이 발생한다. 이로 인해 비슷한 기능을 가진 모듈을 반복해서 구현해야 할 수 있으며 코드 중복이 발생할 수 있다.
- Viscosity(점착성)
- 개발 환경이 느리거나 비효율적인 경우를 가리킨다.
- 개발자가 올바른 방향으로 코드를 작성하기 어렵고, 비효율적인 방식으로 작업해야 하는 상황을 나타낸다.
SOLID
Design Smells를 해결하기 위한 다섯 가지 원칙이다.
1. Single Responsibility Principle(SRP) - 단일 책임 원칙
- 클래스나 모듈이 하나의 책임만 가져야 한다.
- 클래스는 수정을 위한 단 하나의 이유를 가져야 한다.
- SRP를 준수하면 코드의 변경이 한 책임을 가진 클래스에 집중되므로 코드 변경에 따른 영향을 최소화할 수 있다.
2. Open Closed Principle(OCP) - 개방 폐쇄 원칙
- 기존의 코드를 변경하지 않고 새로운 기능을 추가하거나 수정할 수 있도록 설계해야 한다.
3. Liskov Substitution Principle(LSP) - 리스코프 치환 원칙
- 자식 클래스는 부모 클래스에서 가능한 행위를 수행할 수 있어야 한다.
4. Interface Segregation Principle(ISP) - 인터페이스 분리 원칙
- 사용하지 않는 메서드에 의존하지 말아야 한다.
- 여러 개의 구체적인 인터페이스가 낫다는 원칙과 관련이 있다.
5. Dependency Inversion Principle(DIP) - 의존 역전 원칙
- 의존 관계를 맺을 때 변화하기 쉬운 것보다는 변화하기 어려운 것에 의존해야 한다.
- 추상 클래스나 인터페이스를 사용하여 구체적인 클래스에 대한 의존성을 줄이는 것과 관련이 있다.
- 이 원칙을 준수하면 코드가 유연해지고 변경에 대한 저항력이 높아진다.
'Computer Science > Design Pattern' 카테고리의 다른 글
[Design Pattern] 컴포지트 패턴 (Composite Pattern) (0) | 2023.10.08 |
---|---|
[Design Pattern] 팩토리 메소드 패턴 (Factory Method Pattern) (0) | 2023.09.23 |
[Design Pattern] 템플릿 메소드 패턴 (Template Method Pattern) (0) | 2023.09.23 |
[Design Pattern] 싱글톤 패턴 (Singleton Pattern) (0) | 2023.09.23 |
[Design Pattern] 어댑터 패턴 (Adapter Pattern) (0) | 2023.09.22 |