안드로이드 변수 네이밍이 궁금합니다


LayoutInflater mLayoutInflater;

안드로이드 오픈 소스를 보던 중에 궁금한 게 있어요.

많은 사람들이 위와 같이 변수 앞부분에 m을 붙이던데 이유가 궁금합니다.

  • 2016년 06월 01일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 03월 19일에 작성됨
    Software Engineer

조회수 592


2 답변


좋아요
6
싫어요
채택취소하기

안드로이드 오픈소스는 아래와 같은 Naming Convention 을 따릅니다.

Follow Field Naming Conventions

  • Non-public, non-static field names start with m. (public, static이 아닌 것에는 m을 붙여라.(m은 멤버변수의 m입니다.))
  • Static field names start with s. (static에는 s를 붙여라)
  • Other fields start with a lower case letter. (나머지 모든 필드에는 소문자로 시작한다.)
  • Public static final fields (constants) are ALL_CAPS_WITH_UNDERSCORES. (public static final fields 에는 _를 붙히고 모든 문자를 대문자로 써라)
//example
public class MyClass {
    public static final int SOME_CONSTANT = 42;
    public int publicField;
    private static MyClass sSingleton;
    int mPackagePrivate;
    private int mPrivate;
    protected int mProtected;
}

http://source.android.com/source/code-style.html#follow-field-naming-conventions 위주소에 들어가보시면 더 자세한 규칙들을 보실 수 있어요.

위의 규칙들은 안드로이드 오픈 소스프로젝트만 그런것이고 개인 안드로이드 앱만들때는 자유입니다. 안드로이드 앱만들때 저같은 경우는 자바코드 convention을 그대로 따랐습니다. ;
참고로 자바코드스타일은 헝가리언표기법을 사용하지 않습니다.

  • 2016년 03월 19일에 작성됨
    안드로이드, 루비온레일즈

  • 이제 C/C++ 도 더이상 헝가리언 명명법(표기법)을 고수하지는 않는 것 같네요. 안드로이드 처럼 convention을 제공하면 따르면 되고, 그렇지 않더라도, 공동 개발자 간의 협의대로 하면되겠지요.    허대영(Daeyoung Heo)   2016.3.19 23:52     
  • 주연님이 언급하신 부분이지만 안드로이드 애플리케이션 개발을 위한 컨벤션은 없습니다. 우리가 `mLayoutInflater`와 같은 컨벤션을 사용하는 것은 안드로이드 그 자체의 소스코드, 안드로이드 오픈소스 프로젝트(Android Open Source Project)가 위와 같은 컨벤션을 사용하고 있고 그것이 안드로이드 앱 개발자에게도 영향을 주는 것이지요.    Leonardo YongUk Kim   2016.3.20 12:11     
  • 안드로이드 오픈 소스의 컨벤션의 일부분이었군요. 감사합니다!    김선우   2016.3.20 19:12     

가독성을 좋게 하기 위해서, 프로그램을 개발할 때 헝가리안 명명법에 따라 변수이름 앞에 특별한 약자를 붙이는 경우가 있습니다. 언어적인 특징이나 그런 것은 아니므로 꼭 위와 같이해야할 필요는 없으나 개발 언어나 프로젝트 개발 팀에 따라 여러가지 이름 규칙을 사용하는 경우가 있는데 해당 규칙에 따르면 됩니다.

질문하신 접두 m은 member(클래스 변수 혹은 클래스 멤버 변수라는 의미)의 약자입니다.

보통 접두에 멤버(m)/글로벌(g)/Static(s) 등을 뜻하는 것과, 타입을 뜻하는 약자를 순서대로 씁니다.

타입의 경우 다음과 같은 접두어를 씁니다

  • b : bool or boolean
  • c : char
  • i : integer
  • n : number
  • l(L) : long
  • w: word (2byte)
  • dw : double word (4byte)
  • d : double
  • f : float
  • ... 등

포인터의 경우에는 타입 앞에 p 접두어를 더 붙입니다.

  • 2016년 06월 01일에 수정됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.
  • 2016년 03월 19일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close