작지만 단순하지 않은 코드의 함정
Key Point
작은 코드가 항상 유지보수하기 쉬운 것은 아니라는 점을 깨닫는 것은 아키텍처 결정 방향을 바꿀 수 있습니다. 프로그래밍할 때 '작음'이 아닌 '단순함'을 목표로 해야 하는 이유를 설명합니다.
핵심 요약
- 작은 프로그램이 반드시 단순한 것은 아니다. Unix 파이프라인은 작지만 여러 기능이 얽혀 있어 복잡하다.
- 예를 들어 'sort | uniq -c'는 정렬과 집계를 강제로 결합하기 때문에, 출력 순서를 원본 파일 순서로 바꾸려면 복잡한 임시 파일과 조인 작업이 필요해진다.
- 반면 Google Drive처럼 대규모 프로그램도 사용자 입장에서는 단순할 수 있다. 크기와 단순성은 별개다.
- 단순성이란 Rich Hickey의 정의에 따르면 여러 것을 얽지 않은(sim-plex) 상태를 의미한다.
- 복잡성은 대부분 기능들 간의 불필요한 결합(coupling)에서 비롯된다. 예를 들어 Rust의 HashMap은 키가 있는지 확인해야 하지만, struct는 필드가 존재함을 보장한다.