4장 복잡한 코드를 읽는 방법
1. 복잡한 코드를 이해하는 것이 왜 어려운가?
- 우리 두뇌가 코드를 처리할 용량이 부족하기 때문
- 작업 기억 공간은 두뇌가 생각하고 새로운 아이디어를 형성하고 문제를 해결하는 능력에 해당한다.
- 작업 기억공간과 STM의 차이
- STM의 역할은 정보를 기억하는 것, 작업 기억 공간의 역할은 정보를 처리하는 것이다.
- STM과 같이 작업 기억 공간도 한번에 2개에서 6개까지만 기억할 수 있다.
- 작업 기억 공간의 맥락에서 이 용량을 인지 부하라고 부른다.
- 너무 많은 요소가 있어 청크로 나뉘지 않는 문제를 풀려고 할 때 작업 기억 공간은 과부하 상태가 된다.
- 프로그래밍과 관련한 인지 부하의 종류
- 내재적 부하 - 문제 자체가 얼마나 복잡한지
- 외재적 부하
- 외부적 요인에 의해 문제에 추가된 것
- 외재적 부하는 프로그래머에 따라 다르다.
- 특정 개념을 많이 경험할수록 그것에 대한 인지부하는 적어진다.
2. 인지 부하를 줄이기 위한 기법
- 리팩토링
- 리팩토링은 코드가 외부적으로 제공하는 기능은 유지한 채 코드의 내부 구조를 개선하는 것을 의미한다.
- 코드가 전체적으로 유지보수하기 좋게 수정됐다고 해서 가독성까지 반드시 좋아지는 것은 아니다.
- 따라서 유지보수하기 좋은 코드를 작성하기보다는 장기적으로 가독성이 높은 코드를 작성하도록 리팩토링하는 것이 좋을 수도 있다.
- 이런 방식의 리팩토링을 인지적 리팩토링이라고 한다.
- 때론 인지적 리팩토링은 오히려 코드의 유지보수성을 더 낮추는 결과를 가져올 수도 있다.
- 생소한 언어 구성요소를 다른 것으로 대치하기
- 익숙하지 않은 언어 구성요소는 작업 기억 공간에 외재적 인지 부하를 늘리기 때문에 복잡한 코드를 읽을 때는 이들로 인한 부하가 늘어나지 않도록 하는 것이 좋다.
- 플래시카드에 코드 동의어 추가
3. 작업 기억 공간에 부하가 오면 쓸 수 있는 기억 보조 수단
- 의존그래프 생성
- 유관한 변수, 클래스, 메서드를 찾아 원으로 표시하고 연결한다.
- 상태표 사용
- 갠적으로 둘다 유용해보이지 않음