Design Smell
08 May 2022 | Architecture DesignSmellDesign Smell
Design Smell 은 잘못된 디자인의 증상이다. 다른 코드로 확산되지 않도록 가능한 빨리 정리해야 한다. 아래는 Design Smell 의 7가지 증상이다.
Rigidity
한 곳에서 코드를 변경하면 의존하고 있는 다른 많은 곳도 변경이 필요해진다.
Rigidity 는 단순 변경으로도 예상치 못한 많은 변경이 발생할 수 있기 때문에 소프트웨어를 변경할 때 많은 비용이 수반된다.
Fragility
한 곳에서 코드를 변경하면 변경된 코드와 전혀 관련이 없는 다른 코드가 손상될 수 있다.
Fragility 는 소프트웨어를 변경하는 것을 위험하게 만든다. 간단한 변경으로도 변경된 코드와 관련이 없어 보이는 위치에서 코드가 손상될 수 있기 때문이다. 또한 소프트웨어와 관련 없는 변경으로 인해 손상된 코드가 개발 중에 감지되지 않아 프로덕션 환경으로 빠져나갈 수 있기 때문에 소프트웨어의 안정성이 떨어지게 된다.
Immobility
한 부분에서 모듈을 추출하여 다른 부분에 재사용하기 어렵다. 추출할 코드가 다른 코드와 너무 얽혀 다른 코드에 영향을 미치지 않고는 추출할 수 없기 때문에 추출이 어렵다.
Immobility 는 코드 재사용을 어렵게 하기 떄문에 중복된 코드가 많이 발생하게 된다.
Viscosity
좋은 솔루션보다 좋지 않은 솔루션이 더 편리하다. 예를 들어서 빌드/테스트 타임이 너무 길거나 버전 관리가 복잡하다면 개발자는 이를 건너뛰고 쉬운 방법을 선택하게 된다.
Viscosity 는 옳은 일을 하는 것보다 잘못된 일을 하는 것을 더 쉽게 만들고 나쁜 습관을 들이게 해서 소프트웨어 품질을 점진적으로 저하시킨다.
Needless complexity
설계가 필요 이상으로 복잡하다. 즉, 시스템 기능에 필요 없는 부분들이 구성되어 있다. 현재 사용하지 않는 코드나 미래를 대비해서 사용되지 않을 코드가 있는 경우 발생한다.
Needless complexity 는 코드를 더 복잡하고 이해하기 어렵고 유지 관리하기 어렵게 만든다.
Needless repetition
복사된 코드가 다양한 위치에 사용된다. 일반적으로 immobility 또는 단순히 개발자 게으름의 결과다.
Needless repetition 은 발견된 코드 버그로 인해 유사한 모든 코드를 확인하고 수정해야 하기 때문에 유지 관리하기 어렵게 만든다.
Opacity
코드가 너무 이해하기 어렵다.
Opacity 는 코드를 이해하는 데 더 많은 시간이 걸리고 때로는 잘못 이해될 수도 있기 때문에 코드 유지 관리를 방해한다.
Comments