<?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%3A5.1</id>
	<title>SmalltalkBestPracticePatterns:5.1 - 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%3A5.1"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=SmalltalkBestPracticePatterns:5.1&amp;action=history"/>
	<updated>2026-05-02T08:35:19Z</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:5.1&amp;diff=3541&amp;oldid=prev</id>
		<title>Onionmixer: SBPP 5.1 컬렉션 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=SmalltalkBestPracticePatterns:5.1&amp;diff=3541&amp;oldid=prev"/>
		<updated>2013-07-29T06:17:26Z</updated>

		<summary type="html">&lt;p&gt;SBPP 5.1 컬렉션 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;5.1	컬렉션(collections)&lt;br /&gt;
&lt;br /&gt;
컬렉션 계층구조는 스몰토크의 위대한 강점들 중 하나이다. 다른 언어에서는 여러 번 지루하게 반복해서 써야 하는 코드가 스몰토크에서는 하나의 단어로 가능하다. 그렇지만 컬렉션은 동일한 프로토콜에 대부분 반응하기 때문에 그 결과는 더 유연하며, &amp;quot;OrderedCollection&amp;quot; 대신 &amp;quot;Set&amp;quot;로 대체함으로써 선형 리스트를 해시 테이블(hash table)로 변환할 수 있다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
단점은 컬렉션 클래스로 인해 스몰토크를 숙달하기까지 더 많은 내용을 학습해야 한다는 점이다. 좋은 소식은 프로토콜의 어떤 조각도 복잡하거나 배우기가 어렵지 않고, 더 간단하고 빠르며 유지가 쉬운 동시에 유연한 코드를 생산해낸다는 점이다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
단, 컬렉션 클래스가 많다는 가장 큰 단점이 있다. 초보 프로그래머들은 자신들이 이용할 수 있는 클래스와 메시지를 극히 일부만 학습하고, 그 외에 필요로 하는 기능은 절차적 프로그래밍에서 남은 기술들에 의존하는 것이 보통이다. 그 결과, 코드는 필요량보다 훨씬 커지고, 숙련된 스몰토커들이 읽기가 힘든, 오류가 발생하기 쉬운 코드를 생산하게 된다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
예를 들어, 초보자 스몰토크의 코드에선 반복에 대해 직접 코딩한 루프(hand coded loops)를 발견하기가 쉽다. 아래 코드는:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
| index |&lt;br /&gt;
index := 1.&lt;br /&gt;
[index &amp;lt;= aCollection size] whileTrue:&lt;br /&gt;
    [...aCollection at: index...&lt;br /&gt;
    index := index + 1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
aCollection do: [:each | ...each...]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
첫 번째 코드는 인덱스된(indexed) 컬렉션을 이용할 때만 작동하지만 두 번째는 Sets와 Dictionaries에서도 작동할 것이다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
코드를 검토하면서 필자는 컬렉션 프로토콜을 전력으로 이용하여 4개~6개 행으로 이루어진 표현식을 하나의 행으로 변형할 수 있는 기회를 발견하곤 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
컬렉션에 관한 본 책의 논의는 세 가지 부분으로 나뉜다:&lt;br /&gt;
&lt;br /&gt;
* 클래스 – 컬렉션을 사용하고 싶다면 가장 먼저 결정해야 할 것은 “어떤 것”을 정하는 일이다. 해당 절은 각 주요 컬렉션 클래스가 해결하는 문제를 설명한다. &lt;br /&gt;
* 프로토콜 – 다른 언어들로부터 이행되던 프로그래밍 습관들이 컬렉션을 이용 시에는 효과를 감소시킬 수 있다. 해당 절은 당신이 컬렉션으로 전송할 수 있는 주요 메시지와 각 컬렉션이 어떠한 문제를 해결하는지를 설명한다. &lt;br /&gt;
* 관용구(Idiom) - 컬렉션은 너무나 강력하기 때문에 숙련된 스몰토커들이 활용하는 몇 가지 표준 기법 집합이 있다. 이러한 관용구 중 하나를 사용하는 코드를 읽고 있다면 처음엔 깜짝 놀랄 것이다. 해당 절은 컬렉션을 특이한 방식으로 사용하여 해결할 수 있는 문제를 소개한다. &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>