GN⁺: 선형 코드가 더 읽기 쉽다
(blog.separateconcerns.com)- 구글 테스팅 블로그에서 제시된 관점에 도전하며 선형 코드의 가독성에 대해 논의하는 기사
- 저자는 추상화 수준을 분리한 함수가 더 가독성이 좋다는 구글 테스팅 블로그의 주장에 동의하지 않음
- 저자는 위에서 아래로 읽히는 선형 코드가 다양한 추상화 수준 사이를 왔다갔다하는 코드보다 더 직관적이고 이해하기 쉽다고 주장
- 저자는 피자 굽는 함수의 예를 들어 그의 주장을 설명하며, 피자를 굽는 함수가 오븐을 데우는지, 아니면 오븐을 미리 예열해야 하는지 의문을 제기
- 저자는 코드의 가독성이 추상화 수준을 분리하는 구조 때문이 아니라, 코드의 각 부분이 무엇을 하는지 명확하게 설명하기 때문이라고 제안
- 저자는 선형 코드에서 작은 함수를 추출하는 것을 반대하며, 특히 한 번만 사용되는 경우에는 이점이 선형성의 손실을 상쇄하지 못한다고 결론
- 저자는 또한 피자 굽는 함수와 관련된 잠재적 문제를 지적하며, 피자를 만들 때마다 새로운 오븐이 생성되는 이유가 무엇인지 의문을 제기하며, 이는 실제 코드에서 성능 문제를 초래할 수 있음
- 저자는 오븐이 함수의 매개변수가 되어야 하며, 그 제공은 호출자의 책임이어야 하며, 함수는 피자가 아닌 박스를 반환해야 한다고 제안
Hacker News 의견
- 선형 코드와 모듈식 코드의 가독성은 스타일 문제이며, 좋은 판단력과 감각이 필요합니다.
- 과도한 추상화는 코드의 조기 결합을 초래할 수 있습니다.
- 작업 단위를 추상화하기 위해 함수를 추출하는 것은 알고리즘을 정리할 수 있지만 신중하게 사용해야 합니다.
- 제공된 예제 코드는 단순하며 확장성이 떨어집니다. 재사용성과 단위 테스트 가능성도 고려해야 합니다.
- 과도한 리팩토링은 코드의 다른 부분을 이동해야 하는 필요성으로 인해 유지 관리가 더 어려워질 수 있습니다.
- 선형 코드는 실행 순서를 따르므로 읽기 쉽지만, 대규모 코드베이스에서는 확장성이 떨어집니다.
- 깊게 중첩된 호출 스택을 가진 간결한 함수는 대규모 코드베이스에서 악몽이 될 수 있습니다.
- 좋은 선형 코드는 더 읽기 쉽지만, 유지 관리와 테스트가 더 어렵습니다.
- 함수를 가능한 한 작게 유지하고 단일 목적에 가깝게 유지하는 것이 좋은 관행입니다.
- 코드의 구조는 비즈니스 사용 사례에 맞게 구성되어야 이동하기 쉽습니다.
- 선형 코드와 모듈식 코드 모두 선형적으로 읽히지만, 함수의 순서는 가독성에 영향을 줄 수 있습니다.
- 실제 코드는 종종 더 복잡하며, 독자가 세부 사항에 헤매지 않도록 상위 수준의 개요가 필요합니다.