Posts 프로그래머의 뇌 2장 신속한 코드 분석
Post
Cancel

프로그래머의 뇌 2장 신속한 코드 분석

코드를 빠르게 읽고 그 작동을 이해하는 방법에 대한 장. 코드를 빨리 읽을때 두뇌에서 무슨 일이 일어나는지 알면 코드를 얼마나 잘 이해하고 있는지 스스로 확인해보기 쉽다. 이 장에서는 코드분석이 왜 어려운지, 어떻게 코드를 더 빨리 읽을 수 있는지, 코드 읽기 기술을 향상하기 위한 방법이 무엇인지 알아볼 것이다.

2.1 코드를 신속하게 읽기

프로그램은 사람이 읽을 수 있도록 작성해야 한다. 기계가 실행하는 것은 부차적인 일이다.

  • 컴퓨터 프로그램의 구조와 해석

코드를 읽는 목적은 다양하지만 한가지 공통점은, 우리는 그 코드에 존재하는 특정한 정보를 찾는다는 것이다.

  • 새로운 기능을 추가하기에 적절한 곳
  • 마지막으로 수정한 코드 중 버그가 있을 법한 곳
  • 메서드가 어떻게 구현되었는지

관련 정보를 신속하게 찾을 수 있다면 코드를 다시 찾아보는 횟수가 줄어들고, 코드를 읽는 시간에 작업을 할 수 있다.

STM 의 역할을 알아보기 위한 테스트를 진행해보자 (책에서는 코드와 함께 보여줌)

테스트 1 : 삽입정렬 java 코드 재현 테스트

  • LTM에서 가져옴 : 자바 문법과 일반적으로 사용되는 반복문의 형태 (for (int i = 0; i < arr.length; i++)), 삽입정렬 알고리즘, 일반적인 출력문
  • STM 에서 가져옴 : 클래스명, 변수형, 변수의 값, 자료형
  • 결과 : LTM 에서 가져온 부분이 많을수록 기억해야만 하는 부분이 줄어 재현하기가 쉬워진다.

테스트 2 : 어떤 Java 코드 재현 테스트

  • LTM : 거의 가져오지 못함.
    • 코드가 무슨 일을 하는지 파악하기가 어려움 -> 기억나지 않는 부분을 LTM에 저장된 지식으로 추측할 수가 없음
    • for 루프문에 b 등 이상한 변수명을 사용함. -> 일반적이지 않아 의도나 패턴을 파악하기가 어려워짐
  • STM : LTM이 동작하기 않기에 거의 모든 정보를 STM 에서 가져옴
  • 결과 : 재현하기가 어려움

테스트대로 STM의 용량에는 제한이 있기에, STM에 모든 것을 저장하고 처리하는 것은 불가능하다. 이 작은 용량을 극복하기 위해 STM은 LTM과 협업하여 읽거나 기억한 정보를 이해한다.

2.2 기억의 크기 제한을 극복하기

밀러의 이론에 따르면 STM은 최대 6개이다. 하지만 우리는 6개 이상의 정보를 기억하여 업무를 수행한다. 어떻게 가능할까?

더흐로트는 이를 청크라는 개념으로 설명한다. 특정한 정보들의 묶음이 LTM에 있다면 그 묶음만 기억하면 STM은 1개만 소모된다.

  • ex) “A7에 룩, B5에 폰, C8에 킹…” 대신 “시실리언 오프닝”

따라서 특정한 주제에 대해 두뇌가 더 많은 정보를 저장하고 있다면 (LTM), 입력된 정보들을 효율적으로 청크로 묶는 것이 수월해진다. 그렇기에 전문가일수록 더 많은 코드를 기억할 수 있게 되는 것이다.

여기서 중요한 것은 초보는 숙련 개발자보다 훨씬 적은 줄을 처리한다는 점이다. 숙련 개발자조차 새로운 프레임워크, 도메인 개념을 배울때 마찬가지다.

2.3 읽는 것보다 보는 것이 더 많다

영상 기억 공간

어떤 정보가 두뇌로 들어오면 STM에 도달하기 전에 감각 기억 공간을 통과한다. 코드를 읽을땐 해당 정보가 눈으로 들어오고 이 정보는 영상 기억공간에 잠시 저장된다. 이 영상 기억공간은 STM 보다 용량이 크다.

영상 기억 공간에 들어온 정보는 모두 STM 에서 처리할 수 있는 것은 아니기에 우리가 처리할 정보를 선택해야한다. 그런데 이 선택은 의식적으로 이뤄지지 않는다. 코드를 읽을때 세세한 부분을 무시하고 지나가는 경우가 있는데, 이는 무의식적으로 일어난다. 이것이 의미하는 바는 코드를 읽을때 STM이 저장하는 것보다 더 많은 것을 저장하는 것은 이론적으로는 가능하다는 것이다.

기억하는 대상이 중요한 것이 아니고 기억하는 방식이 중요하다

코드를 청크로 묶을 수 있다면 기억하기가 더 쉬워진다. 그리고 이 청크는 일상적으로 예상 가능할수록 더 묶기가 쉬워진다. 이를 쉽게 할 수 있도록 코드를 작성하는 방법에는 다음과 같은 것들이 있다

  • 디자인 패턴 사용
  • 주석문 쓰기
    • 고수준 주석문은 코드를 청크 단위로 쪼개는데 도움이 되지만, 저수준 주석문은 청킹작업에 부담을 준다
    • 따라서 “이진 탐색을 하는 함수”라는 주석은 도움이 되지만, “i를 1만큼 증가”와 같은 주석은 도움이 안된다.
  • 표식 남기기
    • 표식은 일반적으로 코드 내에서 특정 자료구조, 알고리즘, 접근 방식을 보여주는 라인을 뜻한다.
      • ex) 변수명, 주석문, for/if 문 등 주요 알고리즘 등
    • 표식은 코드를 읽고 이해하면서 코드에 대해 개발자가 갖는 가정이 맞는지 틀린지 확인해주는 역할을 수행하기에 매우 중요하다.
    • 표식에는 단순 표식과 복합 표식이 있다.
This post is licensed under CC BY 4.0 by the author.

프로그래머의 뇌 1장 코딩 중 겪는 혼란에 대한 이해

프로그래머의 뇌 3장 프로그래밍 문법 빠르게 배우기

Comments powered by Disqus.