리엔지니어링 패턴의 8장 중복 코드 감지는 소프트웨어 시스템에서 중복된 코드를 탐지하고 관리하는 패턴에 초점을 맞추고 있으며, 소프트웨어의 품질과 유지 보수에 미치는 중요성과 영향을 강조한다.
- 중복 코드 감지의 중요성: 중복 코드는 소프트웨어 개발에서 주요한 "코드 스멜"로 강조되며, 일반적으로 산업용 소프트웨어의 8%에서 12%를 차지한다. 15% 이상은 심각하다고 고려할 수 있다. 이는 유지 관리 비용과 복잡성을 증가시키며, 미래의 변경을 더욱 오류가 발생하기 쉽고 어렵게 만든다.
- 중복 코드 식별 방법:
- 기계적 비교: 모든 코드 줄을 기계적으로 비교하여 중복을 탐지한다. 코드 줄을 정규화(주석, 공백 등 제거)하고 해싱을 사용하여 효율적인 비교를 수행한다.
- 도트 플롯을 이용한 코드 시각화: 도트 플롯은 다른 파일 또는 동일 파일 내에서 동일하거나 유사한 줄의 발생을 표시함으로써 중복 코드 세그먼트를 시각적으로 식별하는 수단을 제공한다.
- 중복 코드의 함의:
- 중복 코드는 모든 인스턴스의 중복 기능을 수정해야 하므로 변경을 구현하기 어렵게 만들며 버그 발생 가능성을 높인다.
- 시스템 로직을 중앙 집중화하기보다는 여러 부분에 흩어지게 함으로써 시스템 이해와 유지 보수를 복잡하게 만든다.
- 탐지 후 전략: 중복된 코드를 식별한 후에는 "메소드 추출"과 "데이터 가까이 작업 이동"과 같은 여러 리팩터링 패턴을 적용하여 시스템의 설계를 개선하고 향후 유지 보수 부담을 줄일 수 있다.
이 문서는 엔지니어와 관리자가 중복 코드를 인식하고 처리하는 데 도움을 주며, 소프트웨어의 유지 보수성을 향상시키고 복잡성을 줄이는 데 기여한다.
참고 문헌
[1] Serge Demeyer et al., "Object-oriented Reengineering Patterns"
[2] https://github.com/blcktgr73/OORP
'Software Architecture' 카테고리의 다른 글
마이크로서비스 API 디자인 패턴: 1장 애플리케이션 프로그래밍인터페이스(API) 기초 (2) | 2024.10.16 |
---|---|
크리스토퍼 알렉산더의 살아있는 구조와 소프트웨어 아키텍처 설계 (3) | 2024.10.09 |
객체 지향 리엔지니어링 패턴: 7장 마이그레이션 전략 (0) | 2024.09.25 |
포스가 아키텍처와 함께하길(May the Force be with the Architecture) (6) | 2024.09.11 |
객체 지향 리엔지니어링 패턴: 6장 테스트라는 생명보험 (2) | 2024.09.04 |