반응형

http://www.gpgstudy.../viewtopic.php?t=566
http://www.gpgstudy.../viewtopic.php?t=627

http://www.gpgstudy.../viewtopic.php?t=860

* get - 가장 흔히 쓰이며 의미하는 범위도 가장 넓다. GetDC(), getInstance(), getPosition() 등등. get은 아래에 나열된 다른 모든 돌려주는 동사들을 포괄한다. 그러나, get의 용도를 최대한 한정시킨다면 주로 ‘이미 계산되어 있는 객체의 속성 또는 시스템의 특정 상태를 돌려주며 상태, 시스템을 변경하거나 어떠한 복잡한 처리를 하지 않는’ 함수에 쓰는 것이 좋다고 본다.


* retrieve - get에 비해 이것은 반환할 결과를 찾기 위한 처리(주로 검색)가 일어남을 암시한다. 필요하다면 이 동사는 search 같은 실제 수행 동사와 get으로 나눌 수 있다.

예:

aCheapestApple = anAppleBox.retrieveApple(CHEAPEST);

=>

anAppleBox.search(CHEAPEST);
aCheapestApple = anAppleBox.getSearchResult();


* acquire - 제한된 자원을 독점적으로 확보한다는 뜻이 있다. 예를 들어 주어진 윈도우 또는 시스템 전체에 DC가 하나이며 GetDC()로 얻은 DC를 ReleaseDC()로 풀기 전까지는 혼자만 사용해야 하는 상황이라고 하자. 그런 경우라면 GetDC() 보다는 AcquireDC()가 더 적합하다. 반환값은 확보한 객체 자체나 포인터, 핸들 등이다. 반대말은 release나 unacquire(get에 대해 release를 사용한다면 acquire에 대해서는 unacquire를 사용해서 구분해 주는 것이 좋을 것임).

예:

AudioManager AudioMgr = new DxAudioManagerImpl();
...
AudioDevice* anAudioDevice = AudioMgr.acquireDevice();
...
AudioMgr.unacquireDevice(anAudioDevice);

* fetch - 돌려준 값을 담고 있는 컨테이너의 내부 상태가 변함을 의미한다. 주어진 컨테이너 안의 어떤 값을 가져오면 현재 값의 위치를 가리키는 포인터가 다음 값으로 이동하게 되는 경우에 fetch가 쓰인다. 데이터베이스 API에서 흔히 볼 수 있다. 스택의 pop과도 비슷하다. 또한 파일 시스템의 많은 함수들이 이러한 fetch 식으로 작동한다. 이는 moveNext와 get으로 분리될 수 있다.

예:

UnitList.reset();
pUnit1 = UnitList.fetch();
pUnit2 = UnitList.fetch();
=>
UnitList.moveFirst();
pUnit1 = UnitList.getUnit();
UnitList.moveNext();
pUnit2 = UnitList.getUnit();

* be 동사와 조동사 - 이들은 어떠한 상태 또는 여부를 뜻하는 부울 값을 돌려줄 때 주로 쓰인다.

예:
while ( isDone ) {
if ( currentUnit.hasWeapon() ) ....
....

}

2. 객체의 상태를 변경하는 함수에 주로 쓰이는 동사들

객체 또는 현재 범위의 어떤 값을 변경하는 함수들에 가장 흔히 쓰이는 동사는 set이다. 이런 동사들은 반환값이 없거나 또는 함수의 성공 여부를 알려주는 반환값을 가진다.

* set - 가장 흔하게 쓰인다. 설명이 필요없겠지만 굳이 부연 설명을 하자면, get의 반대물이라는 차원에서, 상태의 변경에 복잡한 처리가 일어나지 않는 비교적 단순한 코드로 된 함수에 적합하다.

그래픽 시스템

display - 실제의 시각적 변화를 일으킨다는 의미가 있다(버퍼 스왑 등 실제 비디오 메모리 갱신의 차원에서). 또는 아래의 동사들을 포괄하는 고차원 함수에도 쓰인다(특정 그래픽 API에 국한되지 않는...)

render - display와 비슷하나 내부 버퍼 메모리의 갱신만 의미할 수도 있다. 즉 render 후 상황에 따라 display가 수행되는 등. render부터는 특정 그래픽 API에 국한된 함수에 가까와진다. 목적어를 가질 수 있다(renderScene, renderBackground 등)

draw - 개별 데이터나 개별 개체를 그린다는 의미로 많이 쓰인다. Model.draw()나 drawText() 등. render 안에서 일어나는 경우가 많다.

put - 주로 2D에서 점이나 스프라이트를 ‘찍는다’는 의미로 쓰인다. 실제의 시각적 변화보다는 내부 메모리에서의 변화일 가능성이 크다. 3D에서는 별로 쓰이지 않음. 목적어를 가지는 경우가 많다(putPixel, putSprite 등)

flush - 그래픽이나 장면 데이터를 스트림으로 간주할 때 쓰인다. 지금까지 명령 버퍼 또는 프레임 버퍼에 쌓여 있는 데이터를 실제 장치로 밀어 내보낸다는 의미를 가진다. 






올리기동사에 추가해서 올려짐: 2002-09-06 09:49
인용과 함께 답변 이 게시물을 del.icio.us에 추가

가끔가다가..
명사나 형용사로 함수명을 지어야 할때가 있습니다.
무엇무엇과 같은것을...해라..
음 단순한 동사로 했다가는 의미가 애매해지는 경우를 말하는것이죠..
그럴때는 저의 경우는 Do를 앞에 써줍니다.
행동을 해줘야 한다는걸 강조해 주는거죠..
벽깨는 동작을 해라.. 라고 할때 BreakTheWall을 하면..
벽을깨는거지만.
DoMotionBreakingTheWall 이라고 하면 벽깨는 동작을 해라 라고 하게 됩니다.

혹은.. bool값을 반환하는 단순상태의 경우는 Is나 Does를 앞에 써줍니다.
이런 펑션을 If문 안에 써주면 주석을 쓰지않아도 의미가 명료해 집니다.
GetBound?? 이런건 이름자체가 잘못된거지만.. bool을 이렇게 쓰면 웃길때가 있다고 치고
IsInsideBound 는 명료하게 참거짓을 쿼리하는거라는 인식을 하게 하죠..
음... 이건 제 습관이라서... 많은 공격 바랍니다.







류광



가입: 2001년 7월 25일
올린 글: 3452
소속: GPGstudy


타 사이트 ID(?):
docbook.kr::류광
 
올려짐: 2002-09-06 17:18
인용과 함께 답변 이 게시물을 del.icio.us에 추가


아 좋은 지적입니다.. 동사들을 이야기하면서 뭔가 빠진 듯한 느낌이 들었는데 Do 류의 동사들이었네요. do, excute, run, process 등... 이들의 미묘한 차이에 대해서도 조만간 정리해야 겠습니다...

한 가지.. Do의 경우 또 다른 용법은 Do 다음에 실제 동사가 오는 형태입니다. 이런 것은 처리의 위임이나 전처리 후 실제 처리 같은 경우에 많이 보이더군요. 예를 들어

코드:
// 다른 어떤 곳에서
obj->OnDraw(); // 또는 그냥 obj->Draw()
...
void SomeObject::OnDraw() // 역시 또는 그냥 Draw()
{
...// 전처리
// 실제 처리
DoDraw();
}


이런 예에서 Do는 '이제 진짜로 하자~'라는 강조로 쓰이는 것 같습니다..






반응형

+ Recent posts