싱글톤 사용 후 가독성 문제 때문에 질문 드립니다.

kldpjasm의 이미지

유니티로 프로젝트를 진행하다가 너무 길어져버린 이름 때문에 고민 입니다.
13인치 모니터로 보기에는 코드가 너무 긴거 같아서 줄여보려고 하는데 어떻게 해야 될까요...

예시 코드입니다..

void OnDrag(Gesture gesture)
{
	if ((gesture.pickedObject == CharcterController.Instance.player && CharcterController.Instance.fingerIndex == gesture.fingerIndex) ||
		(gesture.pickedObject == CharcterController.Instance.moveTarget.gameObject && CharcterController.Instance.fingerIndex == gesture.fingerIndex))
	{
		Vector3 position = gesture.GetTouchToWorldPoint(gesture.pickedObject.transform.position);
		CharcterController.Instance.moveTarget.transform.position = position - deltaPosition;
	}
}

CharcterController.Instance.player 이런식으로 글자가 너무 길어져서 어떻게 해야 될지 모르겠습니다. ㅠㅠ
따로 변수 하나를 만들고 그안에 player를 넣어서 사용하는건 싱글톤 쓰는 이유가 없는거겠죠..? 하아..

HDNua의 이미지

Unity가 C#을 쓰는 걸로 알고 있는데, CharacterController.Instance 멤버의 속성에 자주 접근하니 이를 임시 변수로 가리키면 낫지 않을까 합니다.
var cci = CharacterController.Instance;

변수 몇 개 만든다고 크게 느려지는 것도 아닌데 가리키게 하는 게 좋을 것 같아요.

저는 이렇게 생각했습니다.

yhsuk의 이미지

싱글턴이라 함수 호출을 꼭 해야 한다 하시면, 아래처럼은 어떤가요?

CharcterController CCI()
{
    return CharcterController.Instance;
}
 
void OnDrag(Gesture gesture)
{
    bool isPlayer = gesture.pickedObject == CCI().player;
    bool isGameObject = gesture.pickedObject == CCI().moveTarget.gameObject;
    bool isSameIndex = CCI().fingerIndex == gesture.fingerIndex;
 
    if ((isPlayer || isGameObject) && isSameIndex)
    {
        Vector3 position = gesture.GetTouchToWorldPoint(gesture.pickedObject.transform.position);
        CCI().moveTarget.transform.position = position - deltaPosition;
    }
}

Signature :) - "여유를 갖고 행동하되 게을러지지 말자"

goforit의 이미지

+1 very good!

익명 사용자의 이미지

늦게 확인하게 되었네요...ㅜ

익명 사용자의 이미지

늦게 확인하게 되었네요...ㅜ