설계에 대한 고민

김형진·2023년 8월 29일

문제 상황

요즘들어 실무에서 새로운 기능을 개발할 때,
설계를 고민하느라 선뜻 기능개발에 들어가지 못하고 시간이 지나치게 지체되는 경우가 종종 있었다.

처음부터 완벽한 설계를 위해 고민하다보면 시간이 많이 소요되고,
어떻게 설계를 겨우 겨우 짜 개발에 적용하다보면 예상치 못한 부분에서 어긋나 처음부터 다시 짜기도 한다.

해결방법

'오브젝트'를 읽다보니 마침 내가 가지고 있는 고민에 대해 다룬 부분이 있다.

필자는 우선 기능이 동작하는 코드를 작성하고 그 후에 리팩토링을 진행하라고 한다.
머리속으로는 생각해봤으나, 실무에서는 딱히 적용해보지는 않은 방법이었다.

코드 작성 순서

위와 같은 방법으로 개발하기 위한 단계는 다음과 같다.

  1. 테스트 코드 작성 : 기능 동작에 책임을 지는 객체를 선정하고, 객체에 보낼 메세지(인터페이스)를 정의한다.(구현은 신경쓰지 않는다.) 그리고 각 상황별로 기대되는 결과가 제대로 도출되는지 검증하는 테스트코드를 작성한다.
  2. 코드 작성 : 객체를 생성하고, 인터페이스를 구현한다. 처음 구현은 하나의 메소드 안에 절차지향적으로 구현한다.
    객체 중심적인 구현을 우선 생각하지 않고, 데이터 중심 설계로 코드를 작성해야 한다.
  3. 메소드 분리 : 한 메소드 안에 구현된 코드 더미를 보고 있으면 메소드를 적절히 분리할 수 있게 된다.
  4. 분리된 메소드의 구현을 적절한 객체들로 다시 한 번 나누어 위임한다.
profile
히히

0개의 댓글