<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=SmalltalkBestPracticePatterns%3A7.4</id>
	<title>SmalltalkBestPracticePatterns:7.4 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=SmalltalkBestPracticePatterns%3A7.4"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=SmalltalkBestPracticePatterns:7.4&amp;action=history"/>
	<updated>2026-05-02T14:01:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=SmalltalkBestPracticePatterns:7.4&amp;diff=3552&amp;oldid=prev</id>
		<title>Onionmixer: SBPP 7.4 Indented Control Flow (들여쓴 제어 흐름) 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=SmalltalkBestPracticePatterns:7.4&amp;diff=3552&amp;oldid=prev"/>
		<updated>2013-07-29T09:35:10Z</updated>

		<summary type="html">&lt;p&gt;SBPP 7.4 Indented Control Flow (들여쓴 제어 흐름) 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;7.4 Indented Control Flow (들여쓴 제어 흐름)&lt;br /&gt;
&lt;br /&gt;
==Indented Control Flow (들여쓴 제어 흐름)==&lt;br /&gt;
&lt;br /&gt;
* 메시지는 어떻게 들여쓰는가?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 패턴 덕분에 few line과 short line을 모두 생성해야 하는 포맷팅의 상충된 요구와 관련해 한시름 놓게 되었다. 이 패턴의 유일한 장점은 Composed Method가 메서드에서 수백 또는 수천 개의 단어를 절대로 다루지 않아도 되게 해주는 최소한의 기능을 가진 메서드들을 생성한다는 점이다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
한 가지 극단적인 방법으로, 메서드 길이가 얼마나 길든 상관없이 동일한 행에 모든 키워드와 argument를 위치시키는 방법이 있다. 이는 메서드의 길이는 최소화하지만 읽기가 힘들다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
메시지에 다수의 키워드가 있는 경우 모두 표시된다는 사실은 스캐닝 리더(scanning reader)로 재빨리 전달하는 데에 중요하다. 자체 행에 각 키워드/argument 쌍을 위치시킴으로써 당신은 독자가 복잡한 메시지의 존재를 쉽게 인식하게 해준다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Arguments는 키워드와 달리 정렬이 필요 없는데, 독자들이 모든 argument를 스캔하는 일은 거의 없기 때문이다. Arguments는 그들의 키워드 컨텍스트에서만 흥미롭다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* zero 또는 one argument 메시지를 그들의 수신자와 동일한 행에 넣어라. 2개 또는 그 이상의 키워드로 된 메시지의 경우 각 키워드/argument 쌍을 자체 행에 넣고 한 탭만큼 들여 써라. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Indented Control Flow로 포맷팅된 zero와 one argument 메시지는 아래와 같다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
foo isNil&lt;br /&gt;
2+3&lt;br /&gt;
a &amp;lt; b ifTrue: [...]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Indented Control Flow로 포맷팅된 two argument 메시지는 아래와 같다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
a&amp;lt;b&lt;br /&gt;
    ifTrue: [...]&lt;br /&gt;
    ifFalse: [...]&lt;br /&gt;
array&lt;br /&gt;
    at: 5&lt;br /&gt;
    put: #abc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
많은 사람들이 ifTrue:와 whileTrue:와 같은 제어문의 포맷팅에 대한 복잡한 예외를 갖고 있다. 필자가 이 패턴을 그토록 좋아하는 이유 중 하나는 조건문을 또 다른 메시지 전송으로 (결국은 그러한 기능을 한다) 취급하면서 합리적인 결과를 제공한다는 점이다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이와 같은 코드의 포맷팅은 전체 선택자를 읽기 수월하게 만든다. 이 예제에서 메시지는 #copyFrom:to:with:startingAt:임을 쉽게 읽을 수 있다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
aCollection&lt;br /&gt;
    copyFrom: 1&lt;br /&gt;
    to: aString size&lt;br /&gt;
    with: aString&lt;br /&gt;
    startingAt: 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Rectangular Block(p.177)은 블록을 포맷팅한다. Guard Clause(p.178)는 들여쓰기가 페이지를 넘어가지 않도록 해준다.&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SmalltalkBestPracticePatterns]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>