web-dev-qa-db-ja.com

命名規則:「m」または「s」で始まるフィールド

多くのコード(たとえば、いくつかのAndroidソースコード)を見て、フィールド名がmで始まり、静的フィールドがsで始まる

例(Android View class source)から取得):

private SparseArray<Object> mKeyedTags;
private static int sNextAccessibilityViewId;

msは何を表していますか... mは変更可能でsは静的ですか?

7
Noya

mは通常、パブリックメンバー用です(一般的なCコードの規則については、この回答を参照してください C++クラスでメンバー変数にプレフィックスを使用する理由 )。

私はこれまでsを見たことがありませんが、その答えに基づいています:

  • メンバーのm
  • 定数/読み取り専用のc
  • ポインターのp(およびポインターへのポインターのpp)
  • v揮発性
  • 静的の場合
  • インデックスとイテレータのi
  • イベントのe

そのコードを見たプロジェクトの公開された標準を読みましたか?

最も有名な接頭辞表記法の1つは ハンガリー語表記 です。

接頭辞に関するJoel Spolskyによる優れたブログ投稿があります: 間違ったコードを間違ったものにする

21
StuperUser

それはハンガリー語表記と呼ばれ、それはひどいです。それについていくつかの研究を行ってください、それは実際には誤解された概念です。

HTMLフォームでのユーザーからの直接の入力など、害を及ぼす可能性のある変数を示しています(たとえば、DBに保存する前にHTMLを削除してください)。

var unsafeComment = $('.input').val();
save(unsafeComment);//looks wrong
//strip out html then save 

Mはmemberの場合で、sはstaticの場合です。

5
AlexanderBrevig