반응형
1. 코드 스멜이 인지 부하를 초래하는 이유
- 코드 스멜에 대한 간략한 소개
- 코드 스멜은 작동은 하지만 개선의 여지가 있는 코드를 의미한다.
- 메서드 수준 코드 스멜: 한 메서드가 많은 라인으로 되어 있고 많은 기능으로 갖는 경우
- 클래스 수준 코드 스멜: 하나의 클래스에 기능이 너무 많아 추상화가 안 되는 경우 혹은 기능이 너무 적어 추상화가 안 되는 경우
- 코드베이스 수준 코드 스멜: 중복코드가 존재하거나 메서들 간에 메시지 체인이 발생하는 경우
- 코드 스멜의 영향: 코드 스멜이 많다면 코드에 오류와 수정이 발생할 가능성이 많아진다.
- 코드 스멜이 인지 과정에 악영향을 미치는 방식
- 긴 매개변수 목록, 복잡한 스위치 문은 작업 기억 공간의 용량 초과를 발생시킨다
- 긴 메서 드는 효율적인 청킹이 불가능하다
- 중복 코드는 청킹이 잘못되어 코드 작성 시 실수를 유발한다.
2. 나쁜 이름이 인지 부하에 미치는 영향
- 언어적 안티패턴
- 구조적으로는 올바르지만 혼동되는 이름을 사용할 경우 발생한다.
- 코드의 언어적 요소와 역할 사이의 불일치로 묘사한다.
- 예를 들어 블리언 값을 반환하는 getCustomers메서드가 있다면 개발자에게 혼동을 준다.
- 언어적 안티패턴은 우리 두뇌에 혼란을 초래해 인지 부하를 높일 수 있다.
- 언어적 안티패턴의 인지 부하 측정방법
- 파스 척도 표 사용
- 눈 기반 측정: 두뇌가 많은 일을 할수록 눈 깜박임 횟수는 줄어들고, 동공의 크기는 커진다.
- 피부 기반 측정: 온도와 땀 흘리는 정도
- 뇌 기반 측정: fMRI 스캐너를 사용해 뇌 가 어떤 활동을 하는지 측정한다.
- 뇌전도: 뇌 활동이 일으키는 전압의 변화를 측정함으로써 발생하는 뉴런의 활동 변화를 측정한다.
- 기능적 fNIRS: 혈액 속의 헤모글로빈이 빛을 흡수하는 성질을 이용하여 적외선 및 광센서를 사용해 뇌의 산소 공급을 감지하고 혈류량을 측정한다.
- 언어적 안티패턴 및 인지 부하
- fNIRS측정한 결과 언어적 안티패턴이 있는 소스 코드를 읽을 때 평균 산소화 혈류량이 유의미하게 증가하는 것으로 나타났다.
- 언어적 안티패턴이 혼란을 일으키는 이유
- 자신이 작성하지 않은 코드 같이 익숙하지 않은 내용을 읽을 때 LTM은 관련 사실과 경험을 검색한다. 이때 충돌하는 이름을 읽게 되면 잘못된 정보가 주어질 수 있다.
- 중복 코코드처럼 잘못된 청킹이 발생할 수 있기 때문이다.
발제문
- 자신이 작성한 코드를 리팩터링 하거나 언어적 안티 패턴을 발견하면 거리낌 없이 코드를 수정할 수 있어서 비교적 편안함 마음을 가질 수 있습니다. 그런데 동료가 작성한 코드이거나 자신보다 경력이 많은 분의 코드에서 인지 부하를 유발하는 코드를 발견하게 되면 코드 리뷰를 진행해야 되는데 어떻게 말을 시작하고 끝맺음을 지어야 될지 난감할 때가 한두 번이 아닙니다. 여러분은 올바른 코드 리뷰 문화를 정착시키기 위한 코드 리뷰 팁이 있을까요?
저는 유니콘 기업들의 올바른 코드 리뷰 블로그 글들을 통해 힌트를 많이 얻고 있습니다.
코드리뷰 문화 레퍼런스
뱅크샐러드: 코드 리뷰 in 뱅크샐러드 개발 문화 | 뱅크샐러드
반응형
'독서 > 2024' 카테고리의 다른 글
[프로그래머의 뇌] CHAPTER11 코드를 작성하는 행위 (0) | 2023.05.16 |
---|---|
[프로그래머의 뇌] CHAPTER10 복잡한 문제 해결을 더 잘하려면 (0) | 2023.05.15 |
[프로그래머의 뇌] CHAPTER8 명명을 잘하는 방법 (0) | 2023.05.14 |
[프로그래머의 뇌] CHAPTER7 생각의 버그 (0) | 2023.05.14 |
[프로그래머의 뇌] CHAPTER6 코딩 문제 해결을 더 잘하려면 (1) | 2023.05.14 |