잘못된 추상화 vs 코드 중복, 무엇이 더 나을까?

by DD
2시간 전
조회수 0

잘못된 추상화는 코드 복잡성을 증가시키고 유지보수를 어렵게 만드는 주요 원인으로 지적됨

코드 중복은 초기에는 비용이 적게 들지만, 장기적으로는 유지보수 비용을 증가시킬 수 있음

커뮤니티에서는 상황에 따른 균형좋은 추상화의 중요성을 강조하는 의견이 다수임

LLM 시대에는 코드 중복 관리의 어려움이 더욱 커질 수 있다는 우려도 제기됨

잘못된 추상화의 함정과 'Sunk Cost Fallacy'

논의에서는 잘못된 추상화(Wrong Abstraction)가 오히려 코드 복잡성(Code Complexity)을 증가시키고 유지보수를 어렵게 만든다고 지적합니다. 특히, 초기 투자 비용에 대한 미련 때문에 매몰 비용 오류(Sunk Cost Fallacy)에 빠져 잘못된 추상화를 고수하는 경향이 있다고 설명합니다. 이러한 추상화는 결국 조건부 로직(Conditional Logic)의 과도한 사용으로 이어져 코드를 이해하기 어렵게 만듭니다.

코드 중복의 양면성과 '균형'의 중요성

커뮤니티에서는 코드 중복(Code Duplication)이 초기에는 빠른 개발(Rapid Development)을 가능하게 하지만, 장기적으로는 유지보수 비용(Maintenance Cost)을 증가시킨다는 점에 동의합니다. 특히, 데이터 격리 아키텍처(Data Isolation Architecture)가 필요한 상황에서 중복된 코드가 서로 다르게 변경될 경우 버그 발생 가능성(Bug Probability)이 높아진다는 우려가 제기됩니다. 따라서 적절한 균형점을 찾는 것이 중요하다고 강조합니다.

LLM 시대의 코드 중복 및 추상화 관리

최근 LLM(Large Language Model)의 발전으로 코드 생성 및 유지보수 방식에 변화가 예상됩니다. 일부에서는 LLM이 코드 중복(Code Duplication)을 처리할 때 일관성을 유지하기 어렵고, 전체 코드베이스에 대한 이해 부족으로 인해 잘못된 추상화를 초래할 수 있다고 지적합니다. 따라서 LLM 시대에도 인간 개발자의 신중한 추상화 설계가 여전히 중요하다고 강조하는 의견이 있습니다.

데이터 중심 설계(Data-Oriented Design) 관점

일부 개발자들은 데이터 중심 설계(Data-Oriented Design) 관점에서 접근할 때 코드 중복 문제가 줄어든다고 주장합니다. 실제 세계를 모델링하는 대신 데이터의 형태와 흐름에 집중하면, 자연스럽게 재사용 가능한 함수(Reusable Functions)를 만들게 되어 불필요한 추상화나 중복을 피할 수 있다는 것입니다. 이는 함수형 프로그래밍(Functional Programming) 패러다임과도 맥을 같이 합니다.

HTML/XML 마크업 중복에 대한 관대한 시각

모든 코드 중복이 동일한 심각성을 갖는 것은 아니라는 의견도 있습니다. 특히 HTML/XML 마크업(Markup)과 같이 비교적 비용이 적은 코드 중복에 대해서는 관대한 태도를 보일 수 있다는 주장입니다. 이는 템플릿 기반의 보일러플레이트 코드와는 다르며, 단순 복사-붙여넣기(Copy-Paste)가 초래하는 위험이 상대적으로 낮다는 점을 근거로 합니다.

Prefer duplication over the wrong abstraction (2016)