diff --git "a/9\354\236\245/\354\203\201\353\262\224.md" "b/9\354\236\245/\354\203\201\353\262\224.md" new file mode 100644 index 0000000..26c5239 --- /dev/null +++ "b/9\354\236\245/\354\203\201\353\262\224.md" @@ -0,0 +1,29 @@ +# 9장 + +어떤 코드가 인지부하를 많이 일으키며, 인지적으로 쉽게 처리하기 위해 코드를 개선할 수 있는 방법을 보자~ + +- 구조적인 혼란 (코드 스멜) +- 내용의 혼란 (언어적 안티패턴) + +## 코드 스멜이 인지 부하를 초래하는 이유 + +코드 스멜이 있다고 오류가 반드시 있는 것은 아니지만, 코드 스멜을 가지고 있으면 오류가 있을 가능성이 높다고 알려져있다 + +## 코드 스멜이 인지 과정에 악영향을 미치는 방식 + +1. 긴 매개변수 목록, 복잡한 스위치 문 => 작업 기억의 용량 초과 +2. 거대한 클래스, 긴 메서드 => 효율적인 청킹이 불가능 +3. 중복 코드 => 잘못된 청킹 +구조가 비슷한 코드를 읽으면, 같은 역할을 하는 코드라고 오해할 수 있음 + +## 나쁜 이름이 인지 부하에 미치는 영향 + +혼동되는 이름 등을 가진 언어적 안티패턴도 인지 부하를 일으킬 수 있음 + +isValid라는 변수가 실제로는 정수형을 가지거나, getCustomers 라는 메서드가 불리언 값을 반환하는 경우 + + +언어적 안티패턴은 두가지 이유로 인지적 문제를 발생시킨다고 함 + +- 충돌되는 이름을 읽으면 잘못된 정보를 LTM에서 가져올 수 있음 +- 중복코드처럼 잘못된 가정을 기반으로 잘못된 청킹이 발생할 수 있음