명시적인 매개변수와 인지 능력
흔히 함수(또는 메소드)의 시그니처라고 하면, 이름과 매개변수 리스트를 뜻합니다. 그리고 시그니처는 일반적으로 그것을 대표하는 특징이라고 할 수 있습니다. 다시 말해서 그 함수가 무엇을 하는지 한줄로 표현한 것으로 이해할 수 있습니다. 그렇기 때문에 더욱 명시적인 매개변수를 사용하는 것이 중요하다고 생각 했습니다.
함수(또는 메소드)의 시그니처는 이름과 매개변수 리스트를 의미하며, 이것은 그 함수의 대표적인 특징을 나타냅니다. 즉, 함수가 무엇을 하는지를 한 줄로 설명하기 때문에, 매개변수를 명시적으로 사용하는 것이 무엇을 하는 함수인지 전달하는 데 중요한 역할을 합니다.
명시적인 매개변수의 중요성에 대해 고민하다가, "얼마나 많은 매개변수를 나열해도 괜찮은가?"라는 현실적인 의문이 들었습니다. 호기심에 인간의 인지 능력을 조사하던 중, ‘밀러의 매직 넘버 7’ 이론을 알게 되었습니다.
이 이론에 따르면, 일반적으로 인간은 단기적으로 7±2개의 아이템을 기억할 수 있습니다. 이를 바탕으로 한다면, 최대 9개의 명시적인 매개변수를 사용하는 것이 이상적인 함수 시그니처일 수 있습니다.
하지만 이에 대한 반론도 있었습니다.
1. 이후 다양한 연구에서 7이 아닌 4라는 결과가 나왔습니다
2. ‘매직 넘버’의 ‘매직’은 비유적인 표현이 와전된 것입니다.
3. 절대적 법칙으로 적용하기에는 무리가 있으며, 상황에 맞는 구체적인 고려가 더 중요합니다.
현실에 대입
조금 더 찾아보니, "기억의 단위는 단순한 개별 아이템의 개수가 아닌 의미적으로 묶인 하나의 덩어리(chunk)"를 의미했다는 것을 알게 되었습니다.
이로 인해 두 가지 생각을 하게 되었습니다.
현실에 타협 : 명시적인 매개변수 기법을 절대적인 규칙으로 여겨 모든 매개변수를 분리하기보다는, 응집도가 충분히 높은 경우라면, 맵이나 객체 타입을 사용하더라도 하나의 명시적인 요소로 간주할 수 있겠습니다.
잘못된 설계 : 만약 풀어헤친 시그니처를 보았을 때, 그 함수의 역할을 이해하기가 어렵다면, 설계 자체에 문제가 있을 수 있습니다. 이 경우 함수가 너무 많은 책임을 가지고 있지는 않은지 검토해 보는게 좋겠다고 생각 했습니다.
마지막으로, 이 내용을 보면서 'PART 01 코드 정리법'에서 언급된 첫 문장이 떠올랐습니다.
저는 구체적인 것에서 출발해 추상적인 것으로 나아가는 학습을 선호합니다.
PART 1 의 세부 챕터의 흐름을 보았을 때, 함수 내부에서 외부로 설명의 시선이 옮겨지고 있다고 느껴져서 꽤나 치밀한 글쓰기를 한다고 생각 했습니다. (드디어 함수 밖으로 나온 느낌..)
'개발 방법론 > tidy first' 카테고리의 다른 글
tidy first 13장 '하나의 더미' 를 읽고 (0) | 2024.10.26 |
---|---|
tidy first 12장 '도우미 호출' 를 읽고 (2) | 2024.10.24 |
tidy first 11장 '비슷한 코드끼리' 를 읽고 (0) | 2024.10.21 |
tidy first 9장 '설명하는 상수' 를 읽고 (0) | 2024.10.14 |
tidy first 8장 '설명하는 변수' 를 읽고 (1) | 2024.10.14 |