E D R , A S I H C RSS

Composed Method

Composed Method

인간과 의사소통이 잘되는 프로그램을 원하는가? 메소드의 이름을 지을때 의도가 잘 드러나게 짓자.

메세지를 보내는 데에는 시간이 걸린다. 즉 함 호출에는 오버헤드가 뒤따른다. 그러므로 최고의 속도를 내려면 하나의 메소드에 모든걸 때려넣을 도 있다. 하지만? 댓가는 클것이다.(인력낭비, 비구조적 프로그램 양산)

초보자들은 작은 크기의 많은 메소드를 보고는, 프로그램의 진행 상황을 잘 모른다고 할 도 있다. 하지만 경험이 쌓일록, 잘 지어진 이름의 메세지는 코드의 흐름을 알기 쉽게 해준다. 메소드 이름을 의도가 드러나게 짓는것은 하나의 메소드 크기를 작게 하는 가장 큰 이유가 된다. 그 코드를 보는 사람들은 하나 하나의 작은 부분을 이해함으로써, 더 큰 부분을 이해할 있게 된다. 또한 메소드를 작게 하면 버그가 발생했을때도 거기에 국한시킬 가 있다. 뭔가 개선하기가 쉬워질 것이다. 물론 상속도 자연스럽게 할 있다.
당신의 프로그램을 하나의 동일화된 작업을 행할 있는 메소드들로 나눠라. 모든 메소드는 같은 준의 추상화를 유지해야 한다. 이는 자연스럽게 여러개의 작은 메소드를 만들어내게 될 것이다.

당신이 가장 중요하게 Composed Method를 쓸때는, 당신이 뭔가를 구현하고 있을때 새로운 책임을 발견했을때이다. 당신이 둘 이상의 메세지를 다른 객체로 보낼때, 신 객체에서는 그 메세지들을 합치는 Composed Method를 만들 있다. 이러한 Method들은 당신의 시스템의 다른 부분에서도 유용하게 쓰일 것이다.

~cpp 
class Controller
{
private :
	/* ... */
	void controlInitialize() {/* ... */}
	void controlLoop() {/* ... */}
	void controlTerminate() {/* ... */}
public :
	void controlActivity()
	{
		controlInitialize();
		controlLoop();
		controlTerminate();
	}
};

개인적으로, 간단해보이지만 아주 중요한 이야기라 생각함. ProgrammingByIntention 의 입장에서, 또한 '같은 레벨의 추상화를 유지하라'라는 대목에서. (StepwiseRefinement 를 하면 자연스럽게 진행됨) --1002

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:58
Processing time 0.0159 sec