구현 패턴의 가치와 원칙

김대협·2023년 1월 20일
0

켄트벡의 구현 패턴 (Implementation Patterns)


패턴은 반복적으로 일어나는 문제에 대한 합리적 해결책을 제공하여 고민의 시간을 줄일 수 있다.

디자인 패턴을 공부하다 보면 가끔 마주하는 격언이 있다.
Don't reinvent the wheel
이미 잘 만들어져 있는 무언가에 대해 시행 착오를 다시 반복할 필요는 없다.
패턴의 힘은 여기서 시작된다고 생각한다.

물론 패턴이 절대 불변의 진리는 아니다. 의사 결정을 돕는 도구가 될 것이고 이를 응용하여 더 나은 대안을 만들 수 있을 것이다.

프로그램을 구현할 때는 나 자신과 컴퓨터 그리고 다른 사람들을 생각해야 한다. - Kent Beck

프로그램의 법칙


  • 프로그램 코드를 새로 작성하는 것보단 읽는 시간이 많다.
  • 프로그램은 언제나 미완이다. 개발 비용보다 수정 비용과 노력이 더 들어간다.
  • 프로그램의 구조는 몇 가지 상태와 제어 흐름 개념으로 결정된다.
  • 프로그램을 읽을 때는 개념 및 세부 사항도 이해해야 전체 그림을 그릴 수 있다.

구현 패턴의 가치


구현 패턴은 커뮤니케이션, 단순성, 유연성의 가치 중 하나 이상을 내포한다.

커뮤니케이션
개발자가 코드를 쉽게 이해하고, 수정하고, 사용할 수 있다는 것은 경제적 비용을 줄일 수 있다.

단순성
프로그램 작성 시 과도한 요소는 제거하여 복잡성을 줄이고 필요한 사항만을 뽑아내면 코드를 새로운 관점으로 바라볼 수 있다.
단, 무조건적 단순화는 오히려 커뮤니케이션을 저해할 수 있다.

유연성
유연성이 있는 프로그램으로 무조건 옳다는 생각을 지양하자.
유연성은 복잡도를 증가시킨다. 유연성이 있으면서도 당장 이득을 얻을 수 있는 패턴을 사용하라.
미지수인 경우 필요한 때가 오면 그때 적용하라.

구현 패턴의 원칙


원칙은 가치에 비해 프로그래밍에 더 특화된 개념이지만, 일반적인 생각을 담고 있으며, 패턴의 근간을 이룬다.
원칙은 패턴의 세부 내용뿐 아니라 패턴을 사용하는 근본적인 이유를 알 수 있고 대처하는 힘을 키운다.

지역적 변화(Local Consequences)
코드가 수정될 떄 동일하게 변경되어야 하는 부분은 최소화 되어야 한다.
이는 커뮤니케이션 쉽게 만들고 프로그램의 수정 비용을 낮출 수 있다.

최소 중복(Minimize Repetition)
같은 코드의 문제는 하나를 바꿀 때 다른 코드도 함께 변경이 일어나야 하는 것이다.
이러한 수정은 지역적 변화의 원칙을 위배한다. 코드의 규모를 작게 만드는 것은 중복을 없앨 수 있는 방법이다.

로직과 데이터의 결합
프로그램 수정 시 로직과 데이터를 모두 변경하는 경우가 빈번하다.
두 사이가 밀접할 수 있도록 가급적 같은 메소드, 같은 객체 내부, 같은 패키지 내부에 배치하자.

대칭성(Symmetry)
프로그램의 대칭성은 여러 요소가 존재한다. 기능적 대칭성(add, remove 메서드), 객체의 생성과 소멸, 공간적 대칭성 등 시각적으로 표현할 수 없는 개념적 대칭성인 경우가 많다.
코드의 대칭성은 프로그램에 일관된 방식으로 표현하는 통일성이라고 할 수 있다.
비슷한 아이디어는 일관된 방식으로 표현하여 중복되는 구현을 제거할 수 있다.

선언적 표현
명령형 프로그래밍과 같이 제어 흐름과 데이터 흐름을 추적해야만 읽을 수 있는 코드를 대체하여
수행 순서가 중요한 구문 혹은 조건부 구문이 없는 일반 구문은 선언적 표현을 통해 코드를 작성하는 것이 이해를 돕는다. (예: JUnit 4의 @RunWith, @TestClasses)

변화율
변화율이 다른 로직과 데이터는 분리하자. 변화율은 시간적 대칭성으로 볼 수 있다.
만일 서로 의존적인 2개의 필드가 있따면 그 필드는 새로운 객체로 관리하는 것이 낫다.
대칭적인 필드를 객체로 묶어서 표현하면 의도를 잘 전달할 수 있고 중복을 줄일 수 있으며 수정에 대한 영향을 제어하기 수월해진다.

Reference


Implementation Patterns (2008) - Kent Beck


© 2023.1 Written by Boseong Kim.
profile
기록하는 개발자

0개의 댓글