<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ComposedMethod</id>
	<title>ComposedMethod - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ComposedMethod"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ComposedMethod&amp;action=history"/>
	<updated>2026-05-14T22:16:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=ComposedMethod&amp;diff=30809&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ComposedMethod&amp;diff=30809&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== Composed Method ===&lt;br /&gt;
인간과 의사소통이 잘되는 프로그램을 원하는가? 메소드의 이름을 지을때 의도가 잘 드러나게 짓자.&lt;br /&gt;
----&lt;br /&gt;
메세지를 보내는 데에는 시간이 걸린다. 즉 함수 호출에는 오버헤드가 뒤따른다. 그러므로 최고의 속도를 내려면 하나의 메소드에 모든걸 때려넣을 수도 있다. 하지만? 댓가는 클것이다.(인력낭비, 비구조적 프로그램 양산)&lt;br /&gt;
----&lt;br /&gt;
초보자들은 작은 크기의 많은 메소드를 보고는, 프로그램의 진행 상황을 잘 모른다고 할 수도 있다. 하지만 경험이 쌓일수록, 잘 지어진 이름의 메세지는 코드의 흐름을 알기 쉽게 해준다. 메소드 이름을 의도가 드러나게 짓는것은 하나의 메소드 크기를 작게 하는 가장 큰 이유가 된다. 그 코드를 보는 사람들은 하나 하나의 작은 부분을 이해함으로써, 더 큰 부분을 이해할수 있게 된다. 또한 메소드를 작게 하면 버그가 발생했을때도 거기에 국한시킬 수가 있다. 뭔가 개선하기가 쉬워질 것이다. 물론 상속도 자연스럽게 할수 있다.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;당신의 프로그램을 하나의 동일화된 작업을 수행할수 있는 메소드들로 나눠라. 모든 메소드는 같은 수준의 추상화를 유지해야 한다. 이는 자연스럽게 여러개의 작은 메소드를 만들어내게 될 것이다.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
----&lt;br /&gt;
당신이 가장 중요하게 Composed Method를 쓸때는, 당신이 뭔가를 구현하고 있을때 새로운 책임을 발견했을때이다. 당신이 둘 이상의 메세지를 다른 객체로 보낼때, 수신 객체에서는 그 메세지들을 합치는 Composed Method를 만들 수 있다. 이러한 Method들은 당신의 시스템의 다른 부분에서도 유용하게 쓰일 것이다.&lt;br /&gt;
----&lt;br /&gt;
 class Controller&lt;br /&gt;
 {&lt;br /&gt;
 private :&lt;br /&gt;
 	/* ... */&lt;br /&gt;
 	void controlInitialize() {/* ... */}&lt;br /&gt;
 	void controlLoop() {/* ... */}&lt;br /&gt;
 	void controlTerminate() {/* ... */}&lt;br /&gt;
 public :&lt;br /&gt;
 	void controlActivity()&lt;br /&gt;
 	{&lt;br /&gt;
 		controlInitialize();&lt;br /&gt;
 		controlLoop();&lt;br /&gt;
 		controlTerminate();&lt;br /&gt;
 	}&lt;br /&gt;
 };&lt;br /&gt;
----&lt;br /&gt;
개인적으로, 간단해보이지만 아주 중요한 이야기라 생각함. ProgrammingByIntention 의 입장에서, 또한 &amp;#039;같은 레벨의 추상화를 유지하라&amp;#039;라는 대목에서. (StepwiseRefinement 를 하면 자연스럽게 진행됨) --&amp;amp;#91;1002&amp;amp;#93;&lt;br /&gt;
----&lt;br /&gt;
[[SBPPSummary]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>