프로그래머의 뇌 - 4. 복잡한 코드를 읽는 방법

2023. 6. 25.·🤓 기술 학습 & 공부 기록/컴퓨터 일반

프로그래머의 뇌 (펠리너 헤르만스 지음)

 

📍목차

1장 | 코드 더 잘 읽기

1. 코딩 중 겪는 혼란에 대한 이해

2. 신속한 코드 분석

3. 프로그래밍 문법 빠르게 배우기

4. 복잡한 코드를 읽는 방법

 

📍4-1. 복잡한 코드를 이해하는 것이 왜 어려울까?

✅작업 기억 공간 (Working Memory) 은 특정 문제에 대한 STM이다. 따라서 많아봐야 7개 정도의 공간 제한이 있다.

인지 부하(cognitive load) : WM이 처리할 수 있는 한계

인지 부하가 한도를 초과하면 과부하(overload) 상태가 된다

 

✅인지 부하의 3종류

- 내재적 부하 : 문제 자체의 복잡도.

예) 피타고라스의 법칙을 이해. 3^2 + 4^2 = 5^2

 

- 외재적 부하 : 외부적 요인에 의해 문제에 추가된 것

예) 피타고라스의 법칙을 사용하기 위해 변수에 실제 숫자를 대입해야 함. a^2 + b^2 = c^2 에 숫자를 대입

프로그램의 우발적 복잡성과 비슷

예) 결과를 위해 과정이 인위적으로 더 복잡해질 수 있는 것

 

- 본유적 부하 : 생각을 LTM에 저장하는 과정에서 일어나는 인지 부하

 

인지 부하 예시

# 코드 1. (잠재적) 외재적 부하 + 내재적 부하
# 리스트 컴프리헨션을 이해한다면 쉽지만
# 모르면 인지 부하 증가
above_ten = [a for a in items if a > 10]

# 코드 2. (같은 역할이므로) only 내재적 부하
above_ten = []
	if a > 10:
    	above_ten.append(a)

 

📍4-2. 인지 부하를 줄이기 위한 기법

✅인지 부하를 줄이기 위한 리팩토링 : 인지적 리팩토링

- 가독성을 좋게 만들기 위해 현 시점에서 개발자가 읽기 쉬운 코드로 변경하는 것

- 유지보수를 쉽게하는 일반적인 리팩토링과 다름

예) 다른 위치의 메서드를 실제 사용처 가까운 곳으로 가져옴

 

✅생소하지만 간편한 문법을 쉬운 문법으로 바꾸기

예) 가독성을 위해 사용하는 파이썬의 리스트 컴프리헨션에 익숙하지 않다면, 일반적인 for loop로 바꾸기

외재적 부하로 인한 과부하 유발을 방지할 수 있다

 

📍4-3. 작업 기억 공간에 부하가 오면 쓸 수 있는 기억 보조 수단

✅복잡한 코드는 2가지 방식으로 WM의 과부하 유발

1. 코드의 어디부터 파악해야 할지 모를 때

-> 필요 이상의 많은 코드를 읽게 하여 WM의 인지 부하 초과

 

2. 위치가 다른 코드가 밀접하게 연결되어 있을 때

-> import 하는 메서드로 이동하여 읽어야 함

 

✅시도해볼만한 방법

1. 의존 그래프

코드를 출력하거나 PDF로 전환하여 변수/메서드 등에 원을 표시하고 연결

 

2. 상태표 사용

엑셀 등에 인덱스별 변수 변화를 표시 -> 특히 반복문을 순회하는 경우 좋음

 
'🤓 기술 학습 & 공부 기록/컴퓨터 일반' 카테고리의 다른 글
  • 프로그래머의 뇌 - 6. 코딩 문제해결을 더 잘하려면
  • 프로그래머의 뇌 - 5. 코드를 더 깊이있게 이해하기
  • 프로그래머의 뇌 - 3. 프로그래밍 문법 빠르게 배우기
  • 프로그래머의 뇌 - 2. 신속한 코드 분석
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (516) N
      • 🎨 프론트엔드 공부 (253) N
        • JS & TS (92) N
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
프로그래머의 뇌 - 4. 복잡한 코드를 읽는 방법
상단으로

티스토리툴바