프로그램은 사람이 읽을 수 있도록 작성해야만 한다. 기계가 실행하는 것은 부차적인 일이다.
코드를 읽는다 = 코드에 존재하는 우리가 원하는 특정 정보를 찾는다
코드 읽기 능력의 향상 → 시간 허비 ⬇️
STM
LTM
프로그래밍 언어 문법에 대한 지식
: for loop문에 대한 지식 등
이 코드가 어떤 기능을 하는 코드라는 지식
: STM에 코드를 다 담지 못했어도, 이 코드는 이 동작을 해야하니까 이렇게 쓰였겠지... 하는 짐작이 가능해짐
→ 이 둘이 함께 사용되어 코드를 재현해낼 수 있음
두번쨰 코드가 훨씬 어려운 이유
→ 우리의 STM의 용량에 제한이 있기 때문에 기억이 어려움 😭
- STM의 시간 : 30초
- STM의 용량 : 2개 ~ 6개
Chunk
Chunk
각각을 기억하는 것이 아닌, 어떠한 그룹으로 묶어 기억하는 것
🚨 이렇게 그룹으로 묶을 때엔 LTM에 있는 지식이 필요함 (아무런 지식이 없으면 단위/패턴으로 묶을 수도 없음)
코드에서의 Chunking
LTM에 지식이 많을수록 Chunking이 쉽고 기억을 쉽게 만든다.
→ 전문가는 초보보다 더 코드를 잘 기억한다 (당연히도...)
💡 하지만 무작위 코드의 경우 전문가와 초보의 차이가 없다 (LTM을 활용할 수 없었으므로...)
정보 → 감각(오감) → 감각 기억 공간(sensory memory) → STM
코드 → 감각 👀 → 영상 기억 공간(iconic memory) → STM
우리가 STM에 기억하는 것보다 더 많은 정보가 순간적으로 영상 기억 공간에 저장되었다가 휘발된다.
코드를 어떤 순서로 기억했는지도 중요한 요소 → 정보의 연관성
전문가 집단이 초보자 집단보다 더 이미 있는 지식을 가지고 순서를 정함
= 디자인 패턴을 사용
디자인 패턴에 대한 지식 ⬆️
→ 코드 청킹 능력 향상
→ 더 빠른 코드 읽기 / 수정 가능
➕ 디자인 패턴에 따른 차이도 있음!!!
주석문이 포함되어있으면 코드 읽기 속도가 늘어남 → 주석문을 유의미하게 읽고있다는 증거
beacon
남기기: 코드를 읽다가 '아 이거구나'라고 생각하게 되는 부분
주석문, 변수명, 필드명, 도출되는 문자열의 값 등이 표식이 될 수 있음!
1️⃣ 단순 표식
코드의 문법을 통해 의미가 자명한 표식
변수명, 연산자, if 구조문 등...
2️⃣ 복합 표식
단순 표식들이 모여 실행되는 기능에 대해서 알려주는 표식
청킹을 의도적으로 연습하는 방법
: 적극적으로 코드를 기억해내는 훈련
코드 선정 (~50줄)
코드 파악 (2분)
코드 재현
회고
다른 사람과 비교 (생략 가능)
내가 왜 리액트 클래스형 컴포넌트만 보면 길 잃었는지, 클래스형 컴포넌트를 조금이나마 공부하고 나니 (LTM에 넣으니) 스택 오버플로우에 클래스형으로 적혀있어도 조금은 도움되는 코드를 파악할 수 있었는지 알게 되었다.
디자인 패턴의 중요성이 부각되는데, 나도 최근에 배운 Custom Hooks를 사용하여 + Styled-Component를 더 제대로 사용하여 올바른 디자인 패턴, 읽기 쉬운 디자인 패턴을 구현해내야겠다.