You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
앞서 다룬 STM, LTM, 작업 기억 공간이 코드를 읽을 때 어떻게 작용하는지, 왜 어려운지에 대해 다뤘다.
즉, 코드를 읽을 때 너무 많은 인지 부하가 발생하기 때문이다.
인지 부하는 작업 기억 공간이 꽉 차서 뇌가 더 이상 제대로 처리하지 못할 때 발생한다.
이번 장에서는 인지적 관점에서 코드를 작성하는 방법에 대해 알아본다.
어떤 종류의 코드가 인지 부하를 많이 발생시키는지 살펴보고, 인지적으로 처리하기 쉽게 하기 위해 코드를 개선할 방법을 논의할 것이다.
특히 코드가 인지 부하를 초래할 수 있는 두 가지 이유에 대해 자세히 살펴보려고 한다.
코드 스멜이 인지 부하를 초래하는 이유
코드가 혼란을 초래하는 이유를 살펴보기 위해 사용할 첫 번째 프레임워크는 코드 스멜이다.
코드 스멜은 읽고있는 리팩터링, 읽은 클린 코드등에 등장하는 개념이다.
코드 스멜에 대한 간략한 소개
파울러는 다양한 코드 스멜과 함께 이것을 해소하기 위한 전략을 함께 목록화하여 설명하였고, 이를 리팩터링이라고 불렀다.
코드 스멜의 예는 매우 긴 메서드, 복잡한 스위치문 등등 다양하게 있다.
메서드 수준 코드 스멜
클래스 수준 코드 스멜
코드베이스 수준 코드 스멜
코드 스멜의 영향
코드 스멜이 있다고 해서 코드에 반드시 오류가 있는 것은 아니다.
다만 코드 스멜을 가지고 있는 코드는 오류가 있을 가능성이 높은 것으로 알려져 있다.
코드 스멜이 인지 과정에 악영향을 미치는 방식
코드 작성 시 코드 스멜이 들어가지 않게 하려면 코드 스멜이 코드 이해에 미치는 악영향을 이해해야 한다.
따라서 코드 스멜과 뇌의 인지 과정, 특히 인지 부하와의 연관성을 탐구할 것이다.
긴 매개변수 목록, 복잡한 스위치 문: 작업 기억 공간의 용량 초과
앞서 작업 기억 공간에 대해 살펴본 내용에 의하면 긴 매개변수 목록과 복잡한 스위치문이 왜 읽기 어려운지 이해할 수 있다.
두 가지 코드 스멜 모두 작업 기억 공간의 과부화와 관련이 있다.
작업 기억 공간의 용량이 6개 정도로 작기 때문에 6개를 넘는 매개변수 리스트는 사람들이 기억하기에 무리가 있다고 설명했다.
이런 코드를 읽는 동안 모든 매개변수를 작업 기억 공간에 저장할 수 없다.
따라서 메서드에 매개변수가 많을수록 이해하기는 더 어려울 것이다.
신의 클래스, 긴 메서드: 효율적인 청깅이 불가능
코드로 작업할 때 우리는 끊임없이 추상화를 생성한다.
모든 기능을 하나의 main() 함수에 두기보다는, 의미 있는 이름을 갖는 별도의 작은 기능으로 나누는 것을 선호한다.
서로 관련된 속성과 함수들은 클래스 안에 모아 놓는다. 개별 함수, 클래스, 메서드로 기능을 분할할 때의 이점은 이름이 문서 역할을 한다는 것이다.
코드 클론: 청킹이 잘못됨
코드 클론 또는 중복 코드 스멜은 별 차이 없는 코드가 계속해서 코드베이스에 추가될 때 발생한다.
작업 기억 공간에 대해 우리가 알고 있는 것에 기초해 생각해보면 중복 코드가 왜 코드 스멜로 간주되는지 그 이유를 알 수 있다.
즉 명확한 개념으로 떨어지도록 세분화를 해야함
나쁜 이름이 인지 부하에 미치는 영향
코드 스멜은 구조적 안티패턴 문자기 있는 코드이다.
아것은 코드가 잘 작성되었으나 파악하기 어려운 구조로 만들어졌다는 것을 의미한다.
즉, 동작은 문제 없지만 리딩에서 큰 문제가 발생한다.
그러나 코드에는 개념적 안티패턴이 있을 수 있다.
코드가 짧은 메서드와 깔끔한 클래스로 올바르게 구성되어 있지만 혼동되는 이름을 갖는 경우다.
이러한 코드 문제는 두 번째 프레임워크인 언어적 안티패턴으로 설명할 수 있다.
두 프레임워크는 코드의 서로 다른 측면을 다루기 때문에 서로 잘 보완한다.
언어적 안티패턴
언어적 안티패턴을 코드의 언어적 요소와 그 역할 사이의 불일치로 묘사한다.
코드의 언어적 요소란 메서드 입출력, 설명 문서, 속성 이름, 데이터 타입, 주석문 등을 포함하는 코드의 자연어 부분으로 정의한다.
안티패턴은 언어적 요소가 수행하는 역할과 일치하지 않을 때 항상 발생한다.
아나우도바의 6가지 언어적 안티패턴
이름이 나타내는 것보다 더 많은 일을 하는 메서드
이름이 나타내는 것보다 더 적은 일을 하는 메서드
이름과 정반대의 일을 하는 메서드
개체에 포함된 것보다 더 많은 것을 가지고 있는 것처럼 보이는 식별자 이름
개체에 포함된 것을 누락하는 식별자 이름
개체에 포함된 것과 반대되는 식별자 이름
인지 부하 측정
인지 부하에 대한 파스 척도
인지 부하를 측정하기 위해 파스 척도를 자주 사용한다.
파스 척도는 한 가지 질문으로 구성된 상대적으로 간단한 설문을 사용한다.
이를 개선하여 생소한 코드를 파악하는 작업을 할 때 파스 척도를 사용하면 코드뿐만 아니라 코드를 읽는 사람과 코드 사이의 관계에 대해서도 돌아보는데 도움이 된다.
눈 기반 측정
특정 작업에 대한 신체의 반응을 측정함으로써 그 순간 그 사람이 무엇을 하고 있든 그 일에서 발생하는 인지 부하를 추정할 수 있다.
생체 측정의 예로 시선 추적이 있다.
눈을 얼마나 깜빡이는 지, 동공의 크기 같은 지표로 두뇌가 어려운 일을 최대한으로 파악하려 하고, 이에 따라 가능한 한 많은 시각적 자극을 받기 위해 노력한다는 것이다.
피부 기반 측정
사람의 피부로도 인지 부화를 알 수 있으며, 피부의 온도와 땀이 인지 부하의 지표다.
뇌 기반 측정
fMRI 스캐너를 사용하여 인지 부하를 체크할 수 있지만 해당 기계를 사용하면 움직임에 제약이 생겨 코드를 수정하지 못한다.
뇌전도
뇌 활동을 측정하는 다른 방법으로는 뇌전도가 있다.
언어적 안티패턴 및 인지 부하
언어적 안티패턴이 혼란을 일으키는 이유
언어적 안티패턴을 많이 가지고 있는 코드는 인지 부하를 더 많이 유발한다.
이러한 연관성을 확인하기 위해서는 뇌 측정을 이용한 연구가 더 많이 필요하지만, 작업 기억과 LTM에 대한 지식을 바탕으로 언어적 안티패턴의 영향에 대해 추측해볼 수 있다.
요약
긴 메서드 등 코드 스멜은 코드의 구조적 문제를 의미한다. 코드 스멜이 인지 부하를 높이는 데 에는 여러 인지적 이유가 있다. 예를 들어 중복 코드는 코드를 제대로 청킹하기 어렵게 만들고, 긴 매개변수 목록은 작업 기억 공간을 많이 차지한다.
생체 인식 센서 등 인지 부하 측정 방법에는 눈 깜빡임 비율, 피부 온도 측정 등 다양한 방법이 있다. 자신의 인지 부하를 측정하려는 경우 일반적으로 파스 척도는 신뢰할 수 있는 도구다.
언어적 안티패턴이란 코드가 실제 수행하는 작업과 맞지 않는 이름을 의미하며, 높은 인지 부하를 초래한다. 이는 우리가 사고할 때 LTM이 돕는 과정에서 잘못된 사실을 발견하기 때문에 일어날 수 있다. 언어적 안티패턴은 실제로 구현되지 않은 코드의 의미를 가정하기 때문에 잘못된 청킹으로 이어질 수 있다.
The text was updated successfully, but these errors were encountered:
나쁜 코드와 인지 부하를 방지하는 두 가지 프레임 워크
앞서 다룬 STM, LTM, 작업 기억 공간이 코드를 읽을 때 어떻게 작용하는지, 왜 어려운지에 대해 다뤘다.
즉, 코드를 읽을 때 너무 많은 인지 부하가 발생하기 때문이다.
인지 부하는 작업 기억 공간이 꽉 차서 뇌가 더 이상 제대로 처리하지 못할 때 발생한다.
이번 장에서는 인지적 관점에서 코드를 작성하는 방법에 대해 알아본다.
어떤 종류의 코드가 인지 부하를 많이 발생시키는지 살펴보고, 인지적으로 처리하기 쉽게 하기 위해 코드를 개선할 방법을 논의할 것이다.
특히 코드가 인지 부하를 초래할 수 있는 두 가지 이유에 대해 자세히 살펴보려고 한다.
코드 스멜이 인지 부하를 초래하는 이유
코드가 혼란을 초래하는 이유를 살펴보기 위해 사용할 첫 번째 프레임워크는 코드 스멜이다.
코드 스멜은 읽고있는 리팩터링, 읽은 클린 코드등에 등장하는 개념이다.
코드 스멜에 대한 간략한 소개
파울러는 다양한 코드 스멜과 함께 이것을 해소하기 위한 전략을 함께 목록화하여 설명하였고, 이를 리팩터링이라고 불렀다.
코드 스멜의 예는 매우 긴 메서드, 복잡한 스위치문 등등 다양하게 있다.
메서드 수준 코드 스멜
클래스 수준 코드 스멜
코드베이스 수준 코드 스멜
코드 스멜의 영향
코드 스멜이 있다고 해서 코드에 반드시 오류가 있는 것은 아니다.
다만 코드 스멜을 가지고 있는 코드는 오류가 있을 가능성이 높은 것으로 알려져 있다.
코드 스멜이 인지 과정에 악영향을 미치는 방식
코드 작성 시 코드 스멜이 들어가지 않게 하려면 코드 스멜이 코드 이해에 미치는 악영향을 이해해야 한다.
따라서 코드 스멜과 뇌의 인지 과정, 특히 인지 부하와의 연관성을 탐구할 것이다.
긴 매개변수 목록, 복잡한 스위치 문: 작업 기억 공간의 용량 초과
앞서 작업 기억 공간에 대해 살펴본 내용에 의하면 긴 매개변수 목록과 복잡한 스위치문이 왜 읽기 어려운지 이해할 수 있다.
두 가지 코드 스멜 모두 작업 기억 공간의 과부화와 관련이 있다.
작업 기억 공간의 용량이 6개 정도로 작기 때문에 6개를 넘는 매개변수 리스트는 사람들이 기억하기에 무리가 있다고 설명했다.
이런 코드를 읽는 동안 모든 매개변수를 작업 기억 공간에 저장할 수 없다.
따라서 메서드에 매개변수가 많을수록 이해하기는 더 어려울 것이다.
신의 클래스, 긴 메서드: 효율적인 청깅이 불가능
코드로 작업할 때 우리는 끊임없이 추상화를 생성한다.
모든 기능을 하나의 main() 함수에 두기보다는, 의미 있는 이름을 갖는 별도의 작은 기능으로 나누는 것을 선호한다.
서로 관련된 속성과 함수들은 클래스 안에 모아 놓는다. 개별 함수, 클래스, 메서드로 기능을 분할할 때의 이점은 이름이 문서 역할을 한다는 것이다.
코드 클론: 청킹이 잘못됨
코드 클론 또는 중복 코드 스멜은 별 차이 없는 코드가 계속해서 코드베이스에 추가될 때 발생한다.
작업 기억 공간에 대해 우리가 알고 있는 것에 기초해 생각해보면 중복 코드가 왜 코드 스멜로 간주되는지 그 이유를 알 수 있다.
즉 명확한 개념으로 떨어지도록 세분화를 해야함
나쁜 이름이 인지 부하에 미치는 영향
코드 스멜은 구조적 안티패턴 문자기 있는 코드이다.
아것은 코드가 잘 작성되었으나 파악하기 어려운 구조로 만들어졌다는 것을 의미한다.
즉, 동작은 문제 없지만 리딩에서 큰 문제가 발생한다.
그러나 코드에는
개념적
안티패턴이 있을 수 있다.코드가 짧은 메서드와 깔끔한 클래스로 올바르게 구성되어 있지만 혼동되는 이름을 갖는 경우다.
이러한 코드 문제는 두 번째 프레임워크인 언어적 안티패턴으로 설명할 수 있다.
두 프레임워크는 코드의 서로 다른 측면을 다루기 때문에 서로 잘 보완한다.
언어적 안티패턴
언어적 안티패턴을 코드의 언어적 요소와 그 역할 사이의 불일치로 묘사한다.
코드의 언어적 요소란 메서드 입출력, 설명 문서, 속성 이름, 데이터 타입, 주석문 등을 포함하는 코드의 자연어 부분으로 정의한다.
안티패턴은 언어적 요소가 수행하는 역할과 일치하지 않을 때 항상 발생한다.
인지 부하 측정
인지 부하에 대한 파스 척도
인지 부하를 측정하기 위해 파스 척도를 자주 사용한다.
파스 척도는 한 가지 질문으로 구성된 상대적으로 간단한 설문을 사용한다.
이를 개선하여 생소한 코드를 파악하는 작업을 할 때 파스 척도를 사용하면 코드뿐만 아니라 코드를 읽는 사람과 코드 사이의 관계에 대해서도 돌아보는데 도움이 된다.
눈 기반 측정
특정 작업에 대한 신체의 반응을 측정함으로써 그 순간 그 사람이 무엇을 하고 있든 그 일에서 발생하는 인지 부하를 추정할 수 있다.
생체 측정의 예로 시선 추적이 있다.
눈을 얼마나 깜빡이는 지, 동공의 크기 같은 지표로 두뇌가 어려운 일을 최대한으로 파악하려 하고, 이에 따라 가능한 한 많은 시각적 자극을 받기 위해 노력한다는 것이다.
피부 기반 측정
사람의 피부로도 인지 부화를 알 수 있으며, 피부의 온도와 땀이 인지 부하의 지표다.
뇌 기반 측정
fMRI 스캐너를 사용하여 인지 부하를 체크할 수 있지만 해당 기계를 사용하면 움직임에 제약이 생겨 코드를 수정하지 못한다.
뇌전도
뇌 활동을 측정하는 다른 방법으로는 뇌전도가 있다.
언어적 안티패턴 및 인지 부하
언어적 안티패턴이 혼란을 일으키는 이유
언어적 안티패턴을 많이 가지고 있는 코드는 인지 부하를 더 많이 유발한다.
이러한 연관성을 확인하기 위해서는 뇌 측정을 이용한 연구가 더 많이 필요하지만, 작업 기억과 LTM에 대한 지식을 바탕으로 언어적 안티패턴의 영향에 대해 추측해볼 수 있다.
요약
The text was updated successfully, but these errors were encountered: