설계에 대한 고민

김형진·2023년 8월 29일
0

문제 상황

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

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

해결방법

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

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

코드 작성 순서

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

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

0개의 댓글