원인
•
게을러서
•
몰라서
복잡한 제어문
과도하게 사용하게 되었을때 복잡해질 수 있습니다.
•
goto
•
branch(if, swtich)
•
loop (for, while)
•
cyclomatic complexity
많은 변수
변수가 많이 사용된다면 코드의 흐름을 따라가기 힘듦
→ 모든것이 상수라면 변수에 대해서 고려안해도 되기때문에 읽기 쉬움
잘못된 상속
코드를 읽을때 현재 코드와 부모클래스의 코드를 오가면서 읽어야함
override된 함수와 아닌 함수를 구분해서 읽어야함
•
클래스 본연의 임무 이외의 기능이 해당 클래스에 들어가면 안된다.
클래스간 의존 관계가 정리가 안됨
클래스간 의존관계가 복잡하여 클래스를 독자적으로 재활용 할 수 없는 상황
어떤 클래스의 동작이 상관없는 다른 클래스에 영향을 미치는 경우
추상화의 부재
하나의 함수 안에서는 동일한 레벨의 추상화가 사용되어야 함
스파게티를 만들지 않고 제거 하려면 OOP를 사용해야함
•
OOP
•
디자인 패턴
•
리팩토링
◦
Unit Test
가장 쉬운 시작하는 방법
코드를 짧게 작성한다.
→ 하나의 함수가 여러개 함수로 분리
→ 요소 분리를 하게 된다.
→ 규칙을 세우고 규칙에 맞게 분리하기 시작
→ 추상화 레벨을 생각할 수 밖에 없음
→ 각각의 역할이 명확해짐
핵심포인트는 고민!