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

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!

익명 사용자의 이미지

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

익명 사용자의 이미지

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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.