# Code Smells ### 클래스 수전 - 전지 전능한 객체 [[God Object]] - 너무 많은 일을 시도하는 클래스로 응집도가 부족하다 - 상수 클래스 [[Constant Class]] - 아무것도 아닌 어디서나 사용되는 상수의 컬렉션인 클래스로 상수 클래스에는 아무것도 포함되지 않는다. - 거부된 유산 [[Refuse Bequest]] - 기본 클래스에 관한 계약을 지키지 않는 클래스로 상송의 대체 원칙을 깨뜨린다 - 프리로더 [[Freeloader]] - 기능이 너무 없는 클래스로 아무것도 하지 않고 가치를 추가하지 않는 클래스다 - 기능에 관한 질투 [[Feature Envy]] - 높은 결합도를 의미하는 다른 클래스의 메소드에 과도하게 의존하는 클래스다 ### 메소드/함수 수준 - 긴 메소드 [[Long method]] - 너무 커지고 복잡해진 메소드나 함수 - 파라미터 증가 [[Parameter creep]] - 함수나 메소드의 너무 많은 파라미터로 함수의 호출 능력과 테스트 용이성을 나쁘게 만든다. - 순환 복잡도 [[Cyclomatic complexity]] - 따르기 어려운 복잡한 로직을 만드는 과도한 분기와 루프를 가진 함수나 메소드로 미묘한 버그의 원인이 될 수 있다. - 과다한 분기를 방지하기 위해 리팩토링돼야 하고 여러 함수로 분할하거나 다시 작성해야 한다. - 과도하게 길거나 짧은 식별자 [[Overly long or short identifiers]] - 이름에서 용도를 명확하게 알려주지 않는 너무 길거나 짧은 변수 이름을 사용하는 함수로 함수 이름에도 똑같이 적용된다. -