'beautiful code'에 해당되는 글 2건

  1. 2007/08/05 "The Way of Testivus" - Testing and Beautiful Code (7)
  2. 2006/10/04 프로젝트 중 개발이 끝나는 시점이 언제일까? (8)
결국, 테스트하기가 쉬운 코드가 아름다운 것이다.

나는 가끔 테스트를 편하게 하기 위해서 디자인 개선을 하기도 한다. 보통 아래 2가지의 경우는 상황에 따라서 선택을 한다. 상속과 위임을 통한 testability를 높이는 일이다. 경험상 위임을 잘 활용하는 것이 테스트하기가 더 쉬웠다. 일련의 로직들이 인터페이스 계약을 통해서 mock을 활용해서 dependency injection이 편했기 때문이다.


상속
비즈니스 로직을 처리하는 템플릿 클래스가 존재하는 경우는 템플릿 추상클래스만 테스트가 끝나면, 그것을 상속 받는 클래스는 거의 테스트가 필요가 없다. 대부분의 로직이나 알고리즘은 부모에서 처리가 되고, 하위에 클래스에 있는 일부 메소드들이 콜백형태로 불리어지기 때문이다.

위임
상속을 받아서 확장하는 디자인인데, 사실 상속받는 내용이 그다지 궁금하지는 않을 때가 있다. 이때는 상속으로 받아서 테스트의 dependency를 어렵게 하는 것보다는 위임을 통해서 좀더 관심의 영역을 좁게 만들 수가 있다. 지금 확장이 필요한 것만 테스트가 가능해지는 것이다.



"The Way of Testivus" - Testing and Beautiful Code
http://beautifulcode.oreillynet.com/2007/08/the_way_of_testivus_testing_an_1.php


Think of code and test as one

When writing the code, think of the test.

When writing the test, think of the code.

When you think of code and test as one,

testing is easy and code is beautiful.

Posted by ologist
 테스트 코드를 만들고, 파란불을 보면서 코드를 붙이기도 하고, 제거하기도 한다. 어떠한 시점이 지나면 그 속에서 중복이 발생하게 되고, 여러가지 hint나 패턴을 적용을 해서 중복을 제거해 나간다. 물론, 빠른 시간 안에 이것을 해내는 사람이 진정한 실력을 갖춘 개발자라고 할수 있다.

설계를 잘해서 모델링을 한후 코드로 옮기면, 바로 만족한 개발을 끝내는 사람이 있는가 하면, 설계를 대강의 윤곽만 잡고, 개발을 하면서 진화를 시키는 방법이 있다.

나같은 경우는 실력이 모잘라서 후자쪽을 자주 선택을 하는 편인데, 테스트를 만들고 개발을 하면서 계속 발전 및 진화를 시키는 모델이다.

개발완료라고 얘기를 해도 하루 아침에 전체적으로 소스가 변화하는 경우도 있다. 그러다 보니 언제쯤 끝을 내야 하는 가는 선택하기 힘든 일이다.

순수하게 function단위의 개발은 테스트 코드로 금방끝나기는 하지만, 그 뒤에 객체들 간의 관계를 만들어 갈때 고민과 어려운 점이 많기때문이다.

일련의 과정중 어느 시점에서 타협을 하는가?

이메일 뉴스레터를 보다가 링크를 통해서 이원영씨의 예전 인터뷰를 볼수가 있었다. 예전에 봤을때는 그냥 넘어간 답변이었는데, 오늘보니 마음에 와닿는다.

내가 짠 코드가 아름답게 보일때 비로서 개발이 완료된 것이다.

지금까지 지난날에 개발한 코드들을 보면, 창피할때가 많다. 트렌드의 변화도 그렇지만, 원칙을 지켰다면 피할수 있는 코드들도 많았지만, 단순한 function개발이 개발완료로 보고 서비스에 올려서 나중에는 내가 보기에도 역겨운 코드들을 남겨두지 않았나 싶다.

역겨운 코드들이 보일때 과감하게 refactoring을 시작해서 아름다운 코드로 만들어 가자.
시간이 늦어질수록 더욱더 힘든 과정을 겪어야 할 것이다. 자신이 만든 코드를 버릴 것이 아니라면, 지금 바로 시작하는 것이 육체적으로나 정신적으로나 비용을 절약하는 방법이다.

만족스러운 개발을 하도록 합시다!!

문: 자신만의 개발 원칙이 있으신가요?

답: 제 원칙은 "하고 싶을때만 프로그램을 짠다"라는 것입니다. 시간에 쫓겨 프로그래밍을 하면 늘 결과가 좋지 않더군요. 꼭 그런 프로그램은 문제를 일으키곤 해요.
문제가 풀리지 않으면 기다려야죠. 그러다 보면, 어느 순간 아, 하고 생각날 때가 있거든요.
제가 짠 코드가 '아름답다'고 보일 때까지, 그래서 희열이 느껴질 때까지 보완합니다. 그러다보면 진정 만족스러운 프로그램이 나오더라고요.

자바서비스, 이원영님 인터뷰
http://www-128.ibm.com/developerworks/kr/interview/2006_03.html
Posted by ologist
이전버튼 1 이전버튼

블로그 이미지
ologist

공지사항

Yesterday171
Today52
Total34,795

달력

 « |  » 2012.02
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

최근에 받은 트랙백

글 보관함