일반적인 안티 패턴들 - Cut-and-Page
2007/05/27 15:57
1. 문제점
재사용은 바람직한 소프트웨어 기술이고, 복사-붙이기는 종종 재사용에 있어 가장 간단한 방법인 것처럼 보임. 사실, 복사-붙이기 해서 약간의 수정을 통해 코드를 재사용하는 것이 쉽고 빠르기 때문.
하지만 이 방법은 개발과 유지보수 사이클이 몇 번 반복되어짐에 따라 몇 가지 문제점이 발생.
어플리케이션이 복사-붙이기 방식을 사용할 경우, 해당 코드의 여러 개의 복사본이 존재하고, 코드 변경시 이 복사본들을 다 변경해 주어야 함.
2. 징후 및 결과 (Symptoms and Consequences)
3. 리팩토링된 해결방안 (Refactored Solutions)
복사-붙이기 기술을 이용해 코드를 재사용하기 보다는, 코드를 복사하거나 수정하지 않으면서 코드를 재사용할 수 있어야함.
사이즈가 작으면서 응집력이 높은 클래스들은 사이즈가 크거나 응집력이 낮은 클래스보다 훨씬 더 재사용성이 높음.
4. 관련 패턴 (Related Pattern)
재사용은 바람직한 소프트웨어 기술이고, 복사-붙이기는 종종 재사용에 있어 가장 간단한 방법인 것처럼 보임. 사실, 복사-붙이기 해서 약간의 수정을 통해 코드를 재사용하는 것이 쉽고 빠르기 때문.
하지만 이 방법은 개발과 유지보수 사이클이 몇 번 반복되어짐에 따라 몇 가지 문제점이 발생.
어플리케이션이 복사-붙이기 방식을 사용할 경우, 해당 코드의 여러 개의 복사본이 존재하고, 코드 변경시 이 복사본들을 다 변경해 주어야 함.
2. 징후 및 결과 (Symptoms and Consequences)
- 버그가 시스템의 여러 부분에서 발생되고 있음. 시스템의 한 부분에서만 버그를 해결하는 것이 아니라, 같은 버그를 시스템의 다른 부분에서도 해결해야 함.
- 코드의 라인수가 증가함. 따라서 코드를 리부하고 유지관리하기 위해 필요한 노력 또한 증가하게 됨.
3. 리팩토링된 해결방안 (Refactored Solutions)
복사-붙이기 기술을 이용해 코드를 재사용하기 보다는, 코드를 복사하거나 수정하지 않으면서 코드를 재사용할 수 있어야함.
사이즈가 작으면서 응집력이 높은 클래스들은 사이즈가 크거나 응집력이 낮은 클래스보다 훨씬 더 재사용성이 높음.
4. 관련 패턴 (Related Pattern)
- Adapter
기능을 정의하고 있는 콤포넌트가 제공하는 인터페이스와 다른 인터페이스를 사용하는 콤포넌트의 코드를 재사용할 수 있도록 함.


