Java变量'm'和'p'前缀

时间:2014-11-10 15:51:21

标签: java variables syntax prefix

此语法的用途和含义是什么?我看到private Object mSelectedOperationRow;mMessageService = pMessageService;等行。 下面有更完整的代码。

public class SearchResponseBean extends BaseBean implements Serializable,
    SearchResponse {

@Autowired
private SearchLifecycleService mSearchLifecycleService;

@Autowired
private ConfigurationServiceImpl mConfig;

@Value("#{sessionBean}")
private Session session;

@Value("#{searchRequestBean}")
private SearchRequest searchRequest;

@Value("#{searchResponseFilterByBean}")
private SearchResponseFilterBy searchResponseFilterBy;

@Value("#{searchHistoryBean}")
private HistoryBean<SearchHistoryItem> historyBean;

@Autowired
private SearchResponseDataModelFactory mSearchResponseDataModelFactory;

private int mCount;
private DataModel mDataModel;
private SearchPerspective mSearchPerspective;
private Operation mSelectedOperation;
private Object mSelectedOperationRow;
private List mSelectedList;
private List<String> mAvailableOperations;
private List mFilteredList;
private boolean mRelatedDocSearch;

private transient MessageService mMessageService;

public SearchResponseBean() {
    mMessageService = new MessageServiceImpl();
}

public SearchResponseBean(MessageService pMessageService) {
    mMessageService = pMessageService;
}

protected void init() {
    String THIS_METHOD_NAME = "init";
    mFilteredList = null;
    mSelectedList = null;
    mSelectedOperationRow = null;
    mSelectedOperation = null;
    mCount = -1;
    mDataModel = null;
    mSearchPerspective = null;
    mAvailableOperations = null;
    mRelatedDocSearch = false;
    logger.debug(getClass(), THIS_METHOD_NAME,
            "Initialized with null/defaults. ");
}

4 个答案:

答案 0 :(得分:6)

这不是语法问题,它是项目指南的事情。有些项目具有变量,成员,参数等的命名约定。

  • m简直就是成员,
  • p代表参数。

它意味着更容易区分局部变量,成员和方法参数。

答案 1 :(得分:5)

mp前缀不是Java语法本身的一部分,它们只是某些项目中使用的约定。 m是&#34;会员&#34;的简称p是&#34;参数&#34;的缩写。这样,当阅读一长串代码时,它清楚每个变量的来源及其含义。现代IDE对成员的颜色不同,因此这种惯例可能没有以前那么有用,但它仍然在某些项目中使用。

答案 2 :(得分:3)

它是Hungarian Notation的一个例子,这是一种命名约定,现在很少用于Java代码。

答案 3 :(得分:2)

这些只是命名惯例。

  1. 通常'mXYZ'用于类的成员变量。
  2. 'pXYZ'用于方法的参数。
  3. 我认为这些只是C ++世界的遗留问题,或者可能是Java的早期IDE版本,在这些版本中可能很难查看变量的“格式化”并确定它是局部变量还是类级别变量。

    在我看来,现在使用'm'和'p'前缀对现代IDE来说是多余的。