반응형
1. ‘변수 역할’ 프레임워크
적절한 변수명은 표식으로 사용될 수 있고 읽고 있는 코드를 깊이 이해하는데 도움이 된다.
- 변수는 각자 다른 일을 한다. 최근 값 보유 자 역할(most recent holder): upperbound, factors목적값 보유자 역할(most wanted holder): max_prime_factors
- 스테퍼 역할(stepper): counter
#소인수 분해 코드
upperbound = int(input('Upper bound?'))
max_prime_factors = 0
for counter in range(upperbound):
factors = prime_factors(counter)
if factors > max_prime_factors:
max_prime_factors = factors
- 변수의 11가지 역할
- 이스턴 핀란드 대학교 교수인 샤이니에미는 대부분의 변수는 11개의 역할로 설명할 수 있다고 주장했다.
- 고정값, 스테퍼, 플래그, 워커, 최근값 보유자, 목적값 보유자, 모집자, 컨테이너, 추적자, 조직자, 임시
2. 역할과 패러다임
- 역할의 이점
- 역할에 대한 정의를 팀원끼리 공유하면 코드를 이해하고 의사 소통하는데 큰 도움이됨
- 샤이니에미의 프레임워크에 따라 11가지의 역할에 대한 아이콘을 만들어 소스 코드의 변수에 표시하면 조금 더 코드를 이해하는 폭이 넓어진다.
- 헝가리안 표기법
- strName은 문자열 타입의 변수, lDistance는 롱타입의 변수를 표시하는 것처럼 타입 시스템이 없는 언어에서 비롯되었다. 오늘날에는 헝가리안 표기법을 사용하는 것이 보통 권장되지 않는다.
- 앱 헝가리안 대 시스템 헝가리안
- 시스템 헝가리안: 변수명에 타입을 나태는 방식
- 앱 헝가리안: 접두어에 변수 타입이 아닌 좀 더 구체적인 의미를 붙이는 방식, 엑셀 코드는 rw나 col이 접두어로 붙는 변수가 많은데 앱 헝가리안 표기법이 사용된 좋은 예이다.
3. 프로그램에 대해 깊이 있는 지식을 얻으려면
- 텍스트 지식 대 계획 지식
- 텍스트 구조 지식: 키워드가 하는 일이나 변수의 역할 같은 프로그램의 표면적인 이해와 관련되어 있다.
- 계획 지식: 프로그래머가 프로그램을 작성할 때 계획한 것이 무엇인지 혹은 무엇을 달성하려고 했는지를 나타낸다.
- 프로그램 이해의 여러 단계
- 초점을 찾는다.
- 초점으로부터 지식을 확장한다.
- 관련된 개체로부터 개념을 이해한다.
- 여러 개체에 걸쳐 있는 개념을 이해한다.
4. 텍스트를 읽는 것과 코드를 읽는 것은 유사하다
- 코드를 읽을 때 우리 뇌에서는 무슨 일이 일어나는가?
- 브로드만 영역과 기능적 자기 공명영상(fMRI)을 통해 연구 진행
- 개발자가 코드를 이해하려고 할 때 BA6, BA21, BA40, BA44, BA47의 브로드만 영역이 활성화됨
- BA6와 BA40 영역은 작업 기억 공간과 주의를 기울이는 정신 활동과 관련 있다.
- 변수명을 의미 파악이 안 되도록 변경했음에도 불구하고 인간 언어 이해와 관련 있는 BA21, BA44, BA47 영역이 활성화되었음
- 즉, 코드를 읽을 때도 인간의 언어로 된 텍스트를 읽을 때와 동일하다.
- 프랫의 연구 결과는 산술 능력이 프로그래밍 능력에 대해 예측력이 별로 없음을 보여준다. 오히려 언어 능력이 훨씬 더 예측력이 크다.
5. 코드 읽기에 적용해 볼 수 있는 텍스트 이해 전략
- 기존 지식의 활성화
- 모니터링
- 코드에 중요한 라인 결정 하기
- 변수명의 의미 추론 하기
- 시각화
- 질문하기
- 요약
발제문
- 최근 회사에서 CI/CD서비스를 Bitbucket에서 Github으로 옮기는 작업을 하면서 이번 챕터의 내용들이 많이 떠올랐습니다. YAML 파일에 써져 있는 일반 변수, CI/CD도구에서 지정한 문법, docker 명령어, shell 명령어등이 혼합되어 있어서 무엇을 모르고 아는지 조차 파악이 안 됐었는데 책에 있는 ‘코드 읽기에 적용해볼 수 있는 텍스트 이해 전략’ 7가지를 상황에 맞게 적용해 보니 도움이 많이 됐습니다. 특히 이관 작업을 마치고 문서화한 것을 팀원에게 공유하니 정리가 잘됐다는 칭찬도 받았습니다. 자랑 문서 링크
코드를 읽는 것은 특수한 경우가 아니면 산술 능력이나 수학적인 재능 보다 언어의 재능이 더 중요하다고 생각되는데 여러분은 개발을 더 잘하기 위해 어떤 재능이 더 필요하다고 생각하시나요?!
반응형
'독서 > 2024' 카테고리의 다른 글
[프로그래머의 뇌] CHAPTER7 생각의 버그 (0) | 2023.05.14 |
---|---|
[프로그래머의 뇌] CHAPTER6 코딩 문제 해결을 더 잘하려면 (1) | 2023.05.14 |
[프로그래머의 뇌] CHAPTER4 복잡한 코드 읽는 법 (0) | 2023.05.12 |
[프로그래머의 뇌] CHAPTER3 프로그래밍 문법 빠르게 배우기 (0) | 2023.05.11 |
[프로그래머의 뇌] CHAPTER2 신속한 코드 분석 (0) | 2023.05.10 |