<?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.6</id>
	<title>SmalltalkBestPracticePatterns:7.6 - 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.6"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=SmalltalkBestPracticePatterns:7.6&amp;action=history"/>
	<updated>2026-05-02T09:43:03Z</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.6&amp;diff=3554&amp;oldid=prev</id>
		<title>Onionmixer: SBPP 7.6 Guard Clause (보호문장절) 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=SmalltalkBestPracticePatterns:7.6&amp;diff=3554&amp;oldid=prev"/>
		<updated>2013-07-29T09:40:41Z</updated>

		<summary type="html">&lt;p&gt;SBPP 7.6 Guard Clause (보호문장절) 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;7.6 Guard Clause (보호문장절)&lt;br /&gt;
&lt;br /&gt;
==Guard Clause (보호문장절)==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Indented Control Flow(p.175)를 이용해 표현식을 작성하고 있다.&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* 조건(condition)이 지속되는 경우 실행되어선 안 되는 코드는 어떻게 포맷팅하는가?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fortran 프로그래밍이 사용되던 오래 전, 다수의 엔트리를 갖고 단일 루틴으로 출구(exit)가 가능하던 시절에는 제어 흐름을 추적하기란 악몽과 같았다. 루틴에서 어떤 statement가 실행되는지, 언제 실행되는지는 정적으로 결정하기가 불가능했다. 이는 &amp;quot;모든 루틴은 하나의 엔트리와 하나의 출구를 가진다,&amp;quot;라는 명령으로 이끌었다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
스몰토크가 먼 옛날 Fortran과 동일한 제약으로 시달린 적은 거의 없지만 다중 출구의 금지는 지속되었다. 루틴이 몇 개의 행만으로 구성된 경우, 루틴 내에서 제어의 흐름을 이해하기란 간단하다. 관심의 대상이 된 것은 바로 루틴들 간 흐름이다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
다중 리턴은 코드의 포맷팅, 그 중에서도 특히 조건문(conditionals)을 간소화할 수 있다. 게다가 메서드의 다중 리턴 버전은 종종 프로그래머의 의도에 대한 좀 더 직접적인 표현식이다. 따라서:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 명시적 리턴으로 one-branch 조건문을 포맷팅하라. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
장치가 이미 연결되지 않았을 때에만 통신장치를 연결하는 메서드가 있다고 치자. 출구가 하나인 메서드 버전은 아래와 같을 것이다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
connect&lt;br /&gt;
    self isConnected&lt;br /&gt;
        ifFalse: [self connectConnection]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이는 &amp;quot;아직 연결되지 않았다면 내 연결을 연결시켜라,&amp;quot;는 의미로 읽을 수 있겠다. 동일한 메서드의 문장보호절(guard clause) 버전은 아래와 같다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
connect&lt;br /&gt;
    self isConnected ifTrue: [^self].&lt;br /&gt;
    self connectConnection&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
위는 &amp;quot;내가 연결되어 있다면 아무 것도 하지마라. 내 연결을 연결시켜라,&amp;quot;고 읽을 수 있다. 문장보호절은 따라야 하는 제어 경로보다는 사실(fact)에 대한 statement 또는 불변식(invariant)에 가깝다.&lt;br /&gt;
&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>