다음은 각 프로그래밍 언어별로 메소드를 호출하는 예 입니다.
그런데 이런 방식에는 다음과 같이 크게 2가지의 단점을 꼽을 수 있습니다.
1. 인수에 대한 설명이 없습니다.
2. 코드의 가독성이 떨어집니다.
우선, 위의 예에서 각각의 숫자가 무엇을 의미하는지 확실히 나타나있지 않습니다. 단지 메소드의 이름을 보고 이것이 X, Y 좌표와 폭과 높이를 의미하겠구나라고 유출할 수 있을 뿐입니다.
하지만 사실 4가지 모두 다 좌표를 의미하는 것일 수도 있습니다.

메소드를 사용하기 위해서는 사전에 어떤 순서대로 어떤 종류의 값들을 넘겨줘야하는지 미리 알고 있어야만 합니다. 때문에 요즘의 개발툴에서는 자동으로 해당 메소드의 설명과 인수 형식을 실시간으로 보여주고 있습니다.
그리고 이 기능이 충분히 도움이 되게 하려면, 메소드를 정의할 때 인수의 이름도 잘 지어놓을 필요가 있습니다.
이 경우 인수를 변수에 담아서 넘겨주게 되면, 그나마 가독성을 높일 수 있습니다.
그런데 스몰토크(Smalltalk)에서는 좀더 효과적인 방법을 쓰고 있습니다.
실은 이 메소드는 다음과 같이 정의 됩니다.
이같은 특성은 스몰토크 코드를 마치 영어 문장과 비슷하게 보이게 하는 효과를 가져옵니다. 그래서 저는 가독성의 면에서 Smalltalk와 같은 방식을 좋아합니다.
태그 : Smalltalk , Method
[C++]보시다시피 메소드 호출의 문법은 어느 언어나 거의 차이가 없습니다. 대부분 메소드에 인자를 넘겨줄 때 ( )안에다 , 로 구분해서 열거하게 됩니다.
Box->draw(100, 150, 200, 200);
[JAVA, C#, Delphi]
Box.draw(100, 150, 200, 200);
[VB]
Box.Draw 100, 150, 200, 200
또는 Call Box.Draw(100, 150, 200, 200)
그런데 이런 방식에는 다음과 같이 크게 2가지의 단점을 꼽을 수 있습니다.
1. 인수에 대한 설명이 없습니다.
2. 코드의 가독성이 떨어집니다.
우선, 위의 예에서 각각의 숫자가 무엇을 의미하는지 확실히 나타나있지 않습니다. 단지 메소드의 이름을 보고 이것이 X, Y 좌표와 폭과 높이를 의미하겠구나라고 유출할 수 있을 뿐입니다.


메소드를 사용하기 위해서는 사전에 어떤 순서대로 어떤 종류의 값들을 넘겨줘야하는지 미리 알고 있어야만 합니다. 때문에 요즘의 개발툴에서는 자동으로 해당 메소드의 설명과 인수 형식을 실시간으로 보여주고 있습니다.

void Box::draw(int aLeft, int aTop, int aWidth, int aHeight)그런데 코딩을 할 때는 이렇게 개발툴의 도움을 받을 수 있지만, 이미 만들어진 코드를 읽을 때(특히 인쇄된 코드를 읽을 때)는 순전히 앞뒤 코드를 보고 짐작하는 수 밖에 없습니다.
{
...
}
이 경우 인수를 변수에 담아서 넘겨주게 되면, 그나마 가독성을 높일 수 있습니다.
int left = 100;하지만 순수하게 상수를 인수로서 전달해야 하는 경우라면, 변수까지 선언하는 것은 좀 낭비일 수 있겠죠. 이럴때 상수 키워드를 정의하는 방법도 있겠습니다.
int top = 150;
int width = height = 200;
Box.draw(left, top, width, height);
const int size = 200;혹은 주석을 달아 놓는 방법도 있겠지만, 그렇다고 메소드 호출 때마다 주석을 달 수는 없는 노릇이죠. 당연한 얘기지만 주석은 꼭 필요한 부분에만 적는 게 좋습니다. 주석이 남발되면 오히려 코드를 읽기가 난잡해집니다.
Box.draw(100, 150, size, size);
그런데 스몰토크(Smalltalk)에서는 좀더 효과적인 방법을 쓰고 있습니다.
[Smalltalk]보시는 바와 같이 인수 앞에 설명이 달려있기 때문에 각각의 인수가 무얼 의미하는지 코드만 가지고도 바로 설명이 됩니다.
Box drawX: 100 Y: 150 width: 200 height: 200.
실은 이 메소드는 다음과 같이 정의 됩니다.
Box>>drawX: aLeft Y: aTop width: aWidth height: aHeight여기서 주의할 것은, 메소드의 이름 자체가 drawX:Y:width:height: 라는 겁니다. Smalltalk에서는 메소드의 이름 사이에도 인수를 넘겨줄 수가 있습니다.
...
이같은 특성은 스몰토크 코드를 마치 영어 문장과 비슷하게 보이게 하는 효과를 가져옵니다. 그래서 저는 가독성의 면에서 Smalltalk와 같은 방식을 좋아합니다.
태그 : Smalltalk , Method




덧글
이런 방식을 사용하지 않는 경우에는 함수를 만들 때 hash array 값을 넘겨주도록 하는 방법을 많이 사용하고 있습니다..좀 번거롭고 성능상의 문제가 있을지는 몰라도 나중에 읽기는 편하더라구요..^^
인텔리센스님 없으면 못살지도요. orz