SmalltalkBestPracticePatterns:7.8

From 흡혈양파의 번역工房
Jump to navigation Jump to search
7.8 Simple Enumeration Parameter (간단한 열거 파라미터)

Simple Enumeration Parameter (간단한 열거 파라미터)

  • 파라미터를 열거 블록으로 어떻게 호출하는가?


이름마다 가능한 한 많은 의미를 포장하는 것은 매우 매력적이다. 클래스, 인스턴스 변수, 메시지는 확실히 세심한 주의를 필요로 한다. 이러한 요소들 각각은 당신이 프로그래밍을 하는 동안 당신의 의도를 상당히 많이 전달할 수 있다.


일부 변수들은 그러한 주의를 받을 자격이 없다. 항상 동일한 방식으로 사용되는 변수, 즉 컨텍스트에서 의미를 쉽게 이해할 수 있는 경우에는 창의성보다 일관성을 요구하라. 불분명한 정보는 프로그램으로 전달되지 않으므로 그러한 변수를 세심하게 명명하는 것은 낭비다. 심지어 독자가 존재하지 않는 변수로 의미를 돌리기라도 하는 경우엔 역효과가 발생할 수도 있다.


  • 파라미터를 "each"라고 불러라. 중첩된 열거 블록을 가진 경우 모든 파라미터명 앞에 설명적 단어를 붙여라.


예를 들어, 아래 코드에서 "each"의 의미는 분명하다:

self children do: [:each | self processChild: each]


블록이 좀 더 복잡할 경우 each는 충분히 기술적이지 못할지도 모른다. 그런 경우 Composed Method(구성 메서드)를 호출하여 블록을 단일 메시지로 바꾸어야 한다. 새로운 메서드에서 Type Suggesting Parameter(타입을 제안하는 파라미터)는 객체의 의미를 명확하게 알려줄 것이다.


중첩된 블록의 일반적인 예로, 비트맵의 두 가지 차원(dimension)를 반복하는 것을 들 수 있다:

1 to: self width do:
    [:eachX |
        1 to: self height do:
        [:eachY | ...]]


컬렉션과 다르게 반복하는 중첩된 블록은 아마도 Composed Method를 이용해 팩토링되어야 할 것이다.


열거 블록의 간소화를 위해 Composed Method(구성 메서드)가 필요할지 모른다.


Notes