다른 개발자가 로직을 이해하기 어렵게 작성된 코드이다.
외계인 코드
아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 코드
스파게티 코드
컴퓨터의 프로그래밍의 소스 코드가 복잡하게 얽힌 모습을 스파게티의 면발에 비유
알 수 없는 변수명
변수나 메서드에 대한 이름 정의를 알 수 없는 코드
로직 중복
동일한 처리 로직이 중복되게 작성된 코드
오염
비즈니스 기능을 수행하지 못하는 많은 컴포넌트들이 존재
문서부족
현재 코드와 문서가 일치하지 않고 수정과 변경을 위한 도메인 지식은 크게 증가하지만 개발자의 지식부족 초래
의미 없는 이름
함수, 클래스, 컴포넌트 이름들이 명확한 의미를 갖지 못하거나 실제 작동과 불일치
높은 결합도
클래스와 컴포넌트 간에 데이터와 컨트롤 흐름이 네트워크로 복잡하게 연결
아키텍처 침식
아키텍처가 더 이상 구별되지 않고 여러 솔루션으로 이루어져 아키텍처상 변형들로 인해 시스템 품질이 떨어짐
잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화하여 깔끔하게 잘 정리된 코드를 말한다.