가령 mFireRate와 같은 변수가 DB에서 얻은 값이고 이 값을 이용해서 다음과 같은 로직이 있다고 칩니다.
mCount++;
if ( mCount >= mFireRate )
{
then fire it.
}
문제는 mFireRate가 DB변수값인지 아닌지 변수명 자체로는 구분하기가 힘들다는 점입니다. 이것을 해결하기 위해서 mFireRateDB와 같이 변수명에 구분을 하기 위한 접두어나 접미사를 써주는 경우가 있는데 이것 역시 마음에 드는 방식은 아닙니다. 해서... 저는 보통 Inner struct, class를 사용해서 다음과 같이 사용합니다.
class Attribute
{
int mFireRate;
} mAttrib;
이렇게 하면 앞서 살펴본 코드가 다음과 같이
mCount++;
if ( mCount >= mAttrib.mFireRate )
{
then fire it
}
구분할 수 있게 됩니다. 그렇게 되면 저는 mCount보다는 다음과 같이 변수명을 바꿀 것입니다.
mFireRate++;
if ( mFireRate >= mAttrib.mFireRate )
{
fire it
}
Attribute안에 들어간 값은 읽기 전용이라고 생각하면 코드를 볼 때 더 이해하기가 쉽습니다. 물론 메소드로 표현하면 더 괜찮겠지만 코드 작성하는게 좀 귀찮긴 하지요 :)
mFireRate++;
if ( mFireRate >= mAttrib.GetFireRate() )
{
fire it
}
No comments:
Post a Comment