우리가 코드를 읽을 때 장기 기억과 단기 기억에 있는 정보를 바탕으로 사고하여 코드에 정보를 이해한다.
이때 장기기억은 언어의 문법, 알고리즘 등 우리가 사전에 학습한 내용과 관련있고 단기기억은 메소드, 변수의 이름, 또는 생소한 문법 등을 포함한다.
그리고 이러한 정보를 바탕으로 우리는 사고하여 이 코드가 무슨 역할을 하고 어떻게 기능하는지 이해한다.
즉 장기 기억, 단기 기억, 사고 이 3가지의 방식이 상호보완하여 코드를 이해한다.
장기기억, 단기기억, 사고 각 방식 중 문제가 생기면 코드의 이해가 원활하게 되지 않는다.
장기 기억 쪽에서 문제가 생겨 코드를 이해하지 못하는 경우를 봐보자.
이때의 예시는 문법, 메소드, 알고리즘 등의 지식이 사전에 학습되지 않아 이해에 문제가 되는 경우이다.
이때의 해결책은 어떤 것을 모르는지 밝혀내고 알아보는 것이다.
단기 기억 쪽에서의 문제는 코드를 읽어내려가는 중 생성한 변수나 함수가 어떤 기능을 하는지 잊어먹는 등의 예시를 들 수 있다.
이때의 해결책은 표시를 해둬 까먹더라도 다시 정보를 쉽게 가져올 수 있게 단서를 남기는 것이다.
사고의 문제 예시는 장기 기억과 단기 기억을 적절히 활용하지 못하는 것으로 들 수 있다.
이 때의 해결책은 디자인 패턴이나 코드를 많이 경험해보고 숙달하는 것이다.
우리는 무언가를 볼 때 각각의 정보를 볼 때도 있지만 정보를 묶어 여러가지 정보를 한번에 처리할 수 있는 능력이 있다.
예를 들어 조건문의 패턴 예시가 있다.
조건문 -> if , if else , else 등이 묶여 바로 떠오르는 것을 볼 수 있음
이 정보를 묶어 처리하는 것을 청크화라고 하는데
우리는 코드를 볼 때 이 청크화릍 통해 정보를 빠르게 처리할 수 있다.
예를 들어
/// 재귀함수를 이용해 노드를 중위순회한다.
void inOrder(Node node) {
inOrder(node.left);
print(node.value);
inOrder(node.right);
}
위 코드가 존재한다.
우리는 주석("재귀함수를 이용해 노드를 중위순회한다.") 과 메소드의 이름
을 보고 중위순회라는 청크를 통해 코드를 빠르게 인식한다.
즉 좋은 코드란 코드의 정보를 잘 청크화하여 빠르게 이 코드가 무엇을 의미하는지 전달하는 코드이다.
표시를 잘하자.
이떄 표시란 메소드의 이름, 주석, 변수의 이름 등 코드가 어떻게 동작하는지 어떤 기능을 하는지 적어놓는 것이다.