python 디자인 패턴 10. The Anti Pattern
10. The Anti Pattern
1. 안티 패턴 개요
- 로버트 마틴에 의한 잘못된 설계 4가지 특징
- Immobile(유연하지 않다) : 재사용이 어렵다
- Rigid(융통성이 없다) : 간단한 수정도 여러 부분을 손봐야 한다.
- Fragile(취약하다) : 수정할수록 시스템이 취약해진다.
- Viscose(점성이 높다) : 설계상의 결함에 대한 수정이 어려워서 겉돌게 된다.
- Immobile(유연하지 않다) : 재사용이 어렵다
-
안티패턴이 생기는 워인
개발자의 소프트웨어 개발 방식이 미숙
개발자가 상황에 맞지 않는 디자인 패턴을 사용 -
안티 패턴의 유용한 점
소프트웨어 개발 단계에서 자주 발생하는 문제의 해결책
문제를 찾아내는 툴을 개발해 원인 분석 가능
애플리케이션과 설계를 개선할 수 있는 다양한 방법을 찾을 수 있다. - 안티 패턴의 종류
- 소프트웨어 개발 안티 패턴
- 소프트웨어 설계 안티 패턴
- 소프트웨어 개발 안티 패턴
2. 소프트웨어 개발 안티 패턴
- 스파게티 코드(Spaghetti Code)
흐름이 뒤죽박죽 섞이게 되는코드 - 황금 망치(Golden Hammer)
잘된 솔류션 하나를 여러군대 사용하는 경우
이유 : 주어진 문제와 환경에 대해서 잘 알지 못하는 외부인(설계자 혹은 상사)이 관여하는 경우 - 용암류 (Lave Flow)
프로그램이 망가질까 봐 두려워서 건드리지 못하는 죽은 코드나 쓸 수 없는 코드
이유 : 테스트와 에러 코드가 지나치게 많은 경우, 코드를 이해하는사람이 아무도 없는 경우 - 복사-붙여넣기 프로그래밍
stack over flow등과 같은 곳에서 그대로 코드를 가져오는 경우
단점
높은 유지보수 비용 버그 발생률
코드 중복으로 인한 모듈식 코드가 줄어듦
동일한 문제 지속적 발생
3. 소프트웨어 설계 안티 패턴
- 시간 낭비
설계의 재사용을 의미
설계 단계에서 해결한 문제와 비슷한 또 다른 문제가 발생한다면 앞서 해결한 방식을 재사용해야 한다.
원인 : 문서 또는 설계 단계의 문제점 및 해결책 공유 부재, 집단 내 소통 부족, 개발 프로세스 및 규칙이 없는 집단. - 제품/기술 종속(vendor lock-in)
개발사가 다른 벤더사가 제공하는 기술에 의존하는 경우
특정 기술이 시스템에 종속돼 떼어낼 수 없는 구조가 돼버린 경우
원인 : 벤더사와 유착 관계 혹은 할인, 기술자나 개발자가 이미 익숙한 제품을 선택 - 다수 디자인
여러 개발자가 모여 함께 시스템을 설계하는 경우 너무 다양한 의견으로 이해 경험이 부족한 기술자의 의견이 더해져 결과물이 복잡해지는 경우