나는 낙타 사건 규칙에 대해 알고 있지만이 m 규칙과 혼동됩니다. 그것은 무엇을 의미합니까? 저는 PHP 개발자입니다. "우리"는 부울의 경우 'b', 정수의 경우 'i'등 유형의 표시로 변수의 첫 문자를 사용합니다.
'm'은 Java입니까? 모바일을 의미합니까? 혼합?
나는 낙타 사건 규칙에 대해 알고 있지만이 m 규칙과 혼동됩니다. 그것은 무엇을 의미합니까? 저는 PHP 개발자입니다. "우리"는 부울의 경우 'b', 정수의 경우 'i'등 유형의 표시로 변수의 첫 문자를 사용합니다.
'm'은 Java입니까? 모바일을 의미합니까? 혼합?
답변:
이 표기법은 제공자를위한 AOSP (Android Open Source Project) 코드 스타일 지침 에서 비롯된 것입니다 .
필드 명명 규칙 준수
- 공개되지 않은 비 정적 필드 이름은 m으로 시작합니다.
- 정적 필드 이름은 s로 시작합니다.
- 다른 필드는 소문자로 시작합니다.
- 공개 정적 최종 필드 (상수)는 ALL_CAPS_WITH_UNDERSCORES입니다.
링크 된 스타일 가이드는 코드가 Android 오픈 소스 프로젝트에 기여하기위한 것입니다.
개별 Android 앱의 코드에 대한 스타일 가이드는 아닙니다.
computedValues
..."
많은 코딩 가이드 라인은 클래스의 '멤버'에 m을 사용합니다. 따라서 프로그래밍 할 때 로컬 변수와 멤버 변수의 차이를 확인할 수 있습니다.
m
구분합니다. 이는 접두사 보다 읽기 쉬운 IMHO 방식 입니다.
m접두사 란 무엇입니까 ?
m멤버 변수 또는 데이터 멤버를 나타냅니다. m비 공용 및 비 정적 필드 에는 접두사를 사용하십시오 .
언제 사용합니까?
private String mCityName;
private float mTemperature;
언제 사용하지 않습니까?
public static int mFirstNumber;
public static final String mDATABASE_NAME;
내가 뭘?
개인적으로는 사용하지 않습니다. 코드가 더 복잡해지고 가독성이 떨어집니다. 코딩에 여전히 메모장을 사용하는 경우 단어가 없지만 최신 IDE는 멤버 및 로컬 변수 또는 다른 것을 강조 표시하고 채색 할 수 있습니다.
결론
사용하다? "예"또는 "아니오"는 개인적인 선택입니다.
public static int
있지만 : s
대신 사용 하십시오. stackoverflow.com/a/49453184/7767664m
public static int sFirstNumber;
클래스의 멤버 변수 인 경우 'm'은 'member'를 의미합니다. 많은 Java 프로그래머는 최신 IDE를 사용하지만 강조 표시, 마우스 오버 툴팁 등이 있으므로 필요하지 않습니다.
코드 규칙이 사용되는 것은 매우 개별적이라고 생각합니다. 다음 접두사로 변수 이름을 지정하는 것을 선호합니다.
그러나 각 프로그래머마다 고유 한 스타일이 있다고 생각합니다.
앞에서 언급했듯이 다른 변수에 맞게 스타일이 지정됩니다. 또한 코드 생성에 매우 유용합니다. "Alt + Insert"를 누르면 가장 일반적인 코드 생성 속성에 대한 창이 나타납니다. 변수에 대해 "get"메소드를 생성하려는 경우 얻을 수 있습니다.
public class Foo{
private int bar;
public int getBar(){
return this.bar;
}
public void setBar(int bar){
this.bar = bar;
}
}
그러나 "m, s"를 선언하면 다음과 같은 결과가 나타납니다.
public class Foo{
private int mBar;
public int getBar(){
return mBar;
}
public void setBar(int bar){
mBar = bar;
}
}
생성자에서 자동으로 생성되고 "m"또는 "s"가 삭제되고 메소드 이름을 가져옵니다. 이 필드 후에 "get"및 "set"은 "m"없이 생성됩니다. Andoroid Fle-> 설정-> 코드 스타일-> Java-> 코드 생성. 그리고 그림과 같이 만드십시오. 아마 도움이 될 것입니다. 내 eng 죄송합니다. 안드로이드 구성
'm'으로 멤버 변수를 시작하는 것이 초기 Android / Google 엔지니어의 개인적인 선호로 보였으므로 권장했습니다.
이제이 규칙은 AOSP 기고자가 아닌 회사의 개발자들의 목을 강요하고 있습니다. 단순히 해당 페이지가 Android 코드 스타일 규칙으로 간주되기 때문입니다. 그 규칙에 어떤 이점이 있는지는 거의 없습니다. Google은 삭제를 고려해야합니다. 그렇지 않은 경우 Android 앱의 경우 코드 스타일 규칙 중 어느 것이 선택적인지 지정하십시오.
https://code.google.com/p/android/issues/detail?id=226814 규칙을 삭제하려면이 탄원서에 대한 지원 의견을 추가하십시오
또한 클래스 / 인스턴스에서 "이 변수는 내 변수이며 다른 사람은이 변수에 접근 할 수 없습니다"라고 말하는 것처럼 "광산"을 나타냅니다. 정적과는 달리 클래스에서만 사용할 수 있지만 해당 클래스의 모든 인스턴스에서 공유 할 수 있습니다. 원을 그리 듯이 각 원의 반지름이 얼마나 큰지 알아야합니다.
private double mRadius;
동시에 카운터는 서클 클래스 내에서 모든 서클을 추적하기를 원합니다.
private static int sCircleCount;
그런 다음 현재 회원의 서클 수를 늘리고 줄일 수있는 정적 멤버가 있습니다.
다음은 명명 규칙입니다.
- 공개되지 않은 비 정적 필드 이름은 m으로 시작합니다.
- 정적 필드 이름은 s로 시작합니다.
- 다른 필드는 소문자로 시작합니다.
- 공개 정적 최종 필드 (상수)는 ALL_CAPS_WITH_UNDERSCORES입니다.
예:
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;
}