Android 튜토리얼에서 대부분의 필드(클래스 멤버)가 m으로 시작하는 이유는 무엇입니까?
저는 낙타 사건 규칙에 대해 알고 있지만, 이 규칙과 혼동됩니다.그것은 무엇의 약자입니까?저는 PHP 개발자입니다."We"는 변수의 첫 글자를 유형의 표시로 사용합니다. 예를 들어 부울의 경우 'b', 정수의 경우 'i' 등입니다.
'm'이 자바인가요?모바일의 약자인가요? 혼합된 건가요?
이 표기법은 기여자를 위한 AOSP(Android Open Source Project) 코드 스타일 지침에서 가져온 것입니다.
필드 이름 지정 규칙 준수
- 비공용, 비정적 필드 이름은 m으로 시작합니다.
- 정적 필드 이름은 s로 시작합니다.
- 다른 필드는 소문자로 시작합니다.
- 공개 정적 최종 필드(정수)는 ALL_CAPS_WITH_UNSCORE입니다.
링크된 스타일 가이드는 Android 오픈 소스 프로젝트에 제공되는 코드에 대한 것입니다.
개별 Android 앱의 코드에 대한 스타일 가이드가 아닙니다.
많은 코딩 가이드라인은 클래스의 '구성원'에 사용됩니다.프로그래밍을 할 때 로컬 변수와 멤버 변수의 차이를 볼 수 있습니다.
접두사란 무엇입니까?
m 멤버 변수 또는 데이터 멤버를 나타냅니다.비공용 및 비정적 필드에 접두사를 사용합니다.
언제 사용할 것인가요?
private String mCityName;
private float mTemperature;
사용하지 않을 때?
public static int mFirstNumber;
public static final String mDATABASE_NAME;
어떻게 해야 하나요?
개인적으로, 저는 그것을 사용하지 않습니다.그것은 코드를 더 복잡하게 만들고 가독성을 혼란시킵니다.만약 당신이 여전히 코딩을 위해 메모장을 사용하고 있다면, 나는 말을 할 수 없지만, 현대의 IDE는 회원과 지역 변수 또는 다른 것들을 강조하고 색칠할 수 있습니다.
결론
사용? "예" 또는 "아니오"는 개인적인 선택입니다.
클래스의 멤버 변수라면 'm'은 '멤버'를 의미합니다.많은 자바 프로그래머들이 그렇게 하지만, 현대의 IDE에서는 강조 표시, 도구 설명 위에 마우스를 올려놓는 등의 기능이 있기 때문에 필요하지 않습니다.
다음과 같은 문제가 있는 경우
IDE에서 세터/게터를 생성하면 getmName() 및 setmName()이 생성됩니다.
다음 작업(설정/편집기/코드 스타일/자바/코드 생성)을 수행하는 것을 잊지 마십시오.
업데이트: 우리는 코틀린에서 이런 것을 사용하지 않습니다(그래서 그것으로 전환하고 더 이상 접두사를 사용하지 않는 것이 좋습니다).
Clean Code 책에 따르면, 그것은 Clean clean code.
멤버 변수 앞에 m을 붙일 필요는 없습니다.게다가, 사람들은 이름의 의미 있는 부분을 보기 위해 접두사나 접미사를 무시하는 법을 빨리 배웁니다.
코드 규약이 사용되는 것은 매우 개별적이라고 생각합니다.변수 이름을 다음 접두사로 지정하는 것이 좋습니다.
- m - 방법 변수
- c - 클래스 변수
- p - 모수 변수
하지만 프로그래머들은 각자의 스타일을 가지고 있다고 생각합니다.
코드에서 변수 이름을 지정하는 것에 대해 이 규칙을 적용해서는 안 된다는 것을 증명하기 위해 여기에 상위 Android Studio의 스크린샷을 전달합니다.
개체 내부의 변수가 m-변수를 기본 변수보다 낮게 배치하기 위해 특별히 정렬되어 있는지 확인합니다.따라서 코드에서 "m" 접두사로 이름을 지정하면 자신으로부터 힙에 숨깁니다.
이 코드 스타일의 장점 중 하나는 변수에 대한 참조를 자동으로 완료하는 동안 "m"을 입력하여 멤버 변수만 볼 수 있다는 것입니다.
로 독성의문다관례의음가의 .m
및 멤변 및수버의 s
Android Studio와 같은 최신 IDE를 사용하는 경우에는 정적 필드를 더 이상 사용하지 마십시오.는 Android Studio를 추가하지 할 수 .m
또는s
.
앞에서 언급했듯이, 그것은 다른 변수에 대해 스타일화되어 있습니다.하지만 코드 생성에도 매우 유용합니다.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"가 삭제됩니다. 메서드 이름을 가져오십시오.이 후 "m" 없이 필드에 대한 "get" 및 "set"이 생성됩니다.Andoroid Fle->설정->코드 스타일->자바->코드 제네릭션그리고 그림에 사인을 합니다.아마 도움이 될 겁니다.미안해요, 엔진이.Android 구성
초기 Android/Google 엔지니어 중 일부는 멤버 변수를 'm'으로 시작하는 것을 개인적으로 선호한 것으로 보이며 이를 권장했습니다.
이제 이 규칙은 AOSP 기여자가 아닌 회사의 개발자들에게 강요되고 있습니다. 단지 그 페이지가 Android Code Style 규칙으로 간주되기 때문입니다.그 규칙에는 어떤 이익이라도 거의 없습니다.구글은 그것을 제거하는 것을 고려해야 합니다.그렇지 않으면 Android 앱의 경우 어떤 코드 스타일 규칙이 선택 사항인지 지정하십시오.
규칙 https://code.google.com/p/android/issues/detail?id=226814 을 제거하려면 이 청원에 지원 의견을 추가하십시오.
클래스/인스턴스에서 "이 변수는 내 것이며 다른 누구도 변수에 접근할 수 없습니다."라고 말하는 것처럼 "내 것"을 의미한다고 말할 수도 있습니다. 정적 변수와는 다릅니다. 클래스에서만 사용할 수 있지만 클래스의 모든 인스턴스에서 공유됩니다.원을 그리면 각 원의 반지름이 얼마나 큰지 알아야 합니다.
private double mRadius;
하지만 동시에 당신은 모든 원을 추적할 수 있는 카운터를 원 클래스 안에서 가질 수 있습니다.
private static int sCircleCount;
그런 다음 정적 멤버를 사용하여 현재 사용 중인 원의 개수를 늘리거나 줄입니다.
다음은 명명 규칙입니다.
- 비공용, 비정적 필드 이름은 m으로 시작합니다.
- 정적 필드 이름은 s로 시작합니다.
- 다른 필드는 소문자로 시작합니다.
- 공개 정적 최종 필드(정수)는 ALL_CAPS_WITH_UNSCORE입니다.
예:
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;
}
언급URL : https://stackoverflow.com/questions/2092098/why-do-most-fields-class-members-in-android-tutorial-start-with-m
'sourcecode' 카테고리의 다른 글
배열의 마지막 요소를 삭제하지 않고 가져오는 방법은 무엇입니까? (0) | 2023.06.13 |
---|---|
Oracle sqlldr TRADING NULLCOLS가 필요한데 그 이유는 무엇입니까? (0) | 2023.06.13 |
엑셀에서 vba 매크로를 실행하기 위해 하이퍼링크를 사용할 수 있습니까? (0) | 2023.06.08 |
v-for를 사용하여 구성 요소를 채우는 Vuexgetter (0) | 2023.06.08 |
Oracle 테이블에 열 추가 (0) | 2023.06.08 |