Skip to content

Latest commit

 

History

History
30 lines (20 loc) · 2.87 KB

File metadata and controls

30 lines (20 loc) · 2.87 KB

가짜 중복과 진짜 중복

  • 보통 중복된 코드를 묶는다고 한다.

  • 초기에 보기에는 중복처럼 보이나, 진화 속도나 이후 모양이 달라서 결국엔 다른 형태로 진화하게 되는 구현체를 가짜 중복이라고 부르기로 함

  • 진짜 중복: 완전히 동일한 로직이나 기능을 하는 코드가 여러 곳에 존재하는 경우. 이 경우 코드를 하나의 함수나 모듈로 통합하여 유지보수성을 높이는 것이 바람직하다.

  • 가짜 중복: 초기에는 동일하게 보일 수 있지만, 시간이 지나면서 다른 방향으로 진화하거나 다른 요구사항에 의해 다른 형태로 발전하는 코드. 즉, 겉보기에는 중복되어 보이지만 실제로는 다른 역할이나 목적을 가지고 있는 코드

우발적 중복 (가짜 중복)

  • 진화 속도가 다를 것이다.
  • 화면 자체가 다르니까, 진화 속도가 다를 것이다.
  • 기획 의존적이다. (당연)
  • 진화 속도의 차이: 초기에는 비슷한 기능을 하더라도 시간이 지나면서 각기 다른 요구사항에 의해 발전하는 속도가 달라질 수 있다.
  • 기획 의존성: 기능의 변화는 주로 기획의 변화에 의해 결정되며, 이는 화면이나 사용자 요구사항의 변화에 따라 달라질 수 있다.

코드를 잘 써야 하는 이유

  • 변화에 대응: 소프트웨어는 항상 변화하는 요구사항에 대응해야 한다. 이를 위해서는 유연한 설계가 필요하며, 이는 기획의 변화에 적절히 대응할 수 있어야 한다.

첫 판단이 틀렸는가?

  1. 기획에 물어본다: 기획자와 협의하여 해당 코드가 실제로 동일한 목적을 가지고 있는지, 아니면 다른 방향으로 발전할 가능성이 있는지 판단하는 것이 중요
  2. 합치고 동적으로 특수 로직을 주입하게 한다: 중복 코드를 통합한 후, 필요에 따라 특정 로직을 동적으로 주입하는 방식도 고려해볼 수 있다. 이를 통해 중복을 줄이면서도 각기 다른 요구사항에 대응할 수 있다.

결론 및 제안

  • 초기 분석 중요성: 코드의 중복 여부를 판단할 때, 단순히 겉모습만 보고 결정하기보다는 기획자와 충분히 협의하고, 해당 기능이 어떤 방향으로 발전할 가능성이 있는지 분석하는 것이 중요
  • 유연한 설계: 변화하는 요구사항에 대응하기 위해 유연한 설계 방식을 채택해야 한다. 예를 들어, 전략 패턴이나 템플릿 메서드 패턴 등을 활용하여 코드의 재사용성과 유연성을 높일 수 있다.
  • 지속적인 커뮤니케이션: 개발자와 기획자 간의 지속적인 커뮤니케이션을 통해 요구사항의 변화를 빠르게 파악하고, 이에 적절히 대응할 수 있는 설계를 유지하는 것이 중요