SmalltalkBestPracticePatterns:7.2
- 7.2 Inline Message Pattern (인라인 메시지 패턴)
Inline Message Pattern (인라인 메시지 패턴)
Intention Revealing Selector(p.49)를 작성할 계획이다.
- 메시지 패턴은 어떻게 포맷팅하는가?
한 가지 대안책으로 행(line)마다 키워드/argument 쌍을 작성하는 방법이 있다. 이는 상단 좌측 모서리부터 바로 아래쪽으로 읽음으로써 메서드의 선택자가 무엇인지 쉽게 확인할 수 있도록 해준다. 하지만 이러한 포맷팅 스타일은 수직 공간을 3행 또는 4행 정도 차지할 것이다. Composed Methods(구성 메서드)는 주로 몇 개의 행으로 이루어진다. 내용보다 서론(introduction)이 더 많은 경우 공간을 낭비하는 것처럼 보인다.
키워드를 수직으로 배열하는 또 다른 이유는 초창기 텍스트 에디터에는 줄바꿈(line wrapping)이 없기 때문에, 모든 파라미터를 보고 싶다면 가로로 스크롤해야 했다. 최신 스몰토크는 모두 소스 코드 에디터에서 줄바꿈을 이용할 수 있으므로 창의 크기나 메시지 패턴의 너비와 상관없이 모든 argument를 이용할 수 있다.
선택자를 전체로서 읽는 문제는 브라우저(browser)로 해결된다. 당신은 절대로 메서드를 텍스트의 원본 조각(raw piece)으로 보지 않는다. 메서드는 항상 브라우저의 컨텍스트에 표시된다. 선택자는 항상 메서드 가까이에 표시된다. 어떤 메서드를 작업 중인지 잊은 경우, 메서드 위를 재빨리 확인하면 답을 얻을 것이다.
그것이 아니라면, 메시지 패턴이 차지한 수직 공간을 절약함으로써 본래 가능한 것보다 작은 브라우저에서 다수의 메서드를 재빨리 훑어볼 수 있다. 유용하다면 이 방법을 통해 화면에서 동시에 더 많은 정보를 표시하도록 해준다. 메서드의 텍스트를 스크롤 할 필요 없이 프로그램을 보는 것과 끊임없이 스크롤하면서 보는 것에는 큰 차이가 있다.
- 명시적 행 바꿈 없이 메시지 패턴을 작성하라.
이 패턴으로 포맷팅된 메시지 패턴의 예제를 들어보겠다:
from: fromInteger to: toInteger with: aCollection startingAt:
startInteger
위의 것이 아래와 같이 포맷팅되는 것을 본 적이 있다:
from: fromInteger
to: toInteger
with: aCollection
startingAt: startInteger
또는 그보다 더 심각하게 포맷팅되기도 한다:
from: fromInteger
to: toInteger
with: aCollection
startingAt: startInteger
두 가지 모두 수직 공간을 사용하여 스크롤을 하지 않고는 메서드의 body를 (중요한 부분이자 깜짝 놀라랄 만한 부분) 볼 수 없게 될 확률이 증가한다.
파라미터에 Type Suggesting Parameter Names(p.174)를 사용하라.