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

Java变量';m';和';p';前缀,java,variables,syntax,prefix,Java,Variables,Syntax,Prefix,这个语法的目的和意义是什么?我看到的行类似于private Object mselectedoperation行和mMessageService=pMessageService。 下面是更完整的代码 public class SearchResponseBean extends BaseBean implements Serializable, SearchResponse { @Autowired private SearchLifecycleService mSearchLifec

这个语法的目的和意义是什么?我看到的行类似于
private Object mselectedoperation行
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. ");
}
公共类SearchResponseBean扩展BaseBean实现可序列化,
搜索响应{
@自动连线
私人搜索生命周期服务mSearchLifecycleService;
@自动连线
私有配置ServiceImpl mConfig;
@值(“#{sessionBean}”)
非公开会议;
@值(“#{searchRequestBean}”)
私人搜索请求搜索请求;
@值(“#{searchResponseFilterByBean}”)
私有SearchResponseFilterBy SearchResponseFilterBy;
@值(“#{searchHistoryBean}”)
私人大豆;
@自动连线
私人SearchResponseDataModelFactory mSearchResponseDataModelFactory;
私人国际帐户;
私有数据模型mDataModel;
私人搜索视角;
私有操作mSelectedOperation;
私有对象mSelectedOperationRow;
私有列表mSelectedList;
私有列表mavaailable操作;
私人名单;
私有布尔mRelatedDocSearch;
私有瞬态消息服务mMessageService;
公共SearchResponseBean(){
mMessageService=newmessageserviceinpl();
}
公共搜索响应bean(MessageService pMessageService){
mMessageService=pMessageService;
}
受保护的void init(){
将此方法设置为字符串\u NAME=“init”;
mFilteredList=null;
mSelectedList=null;
mSelectedOperationRow=null;
mSelectedOperation=null;
mCount=-1;
mDataModel=null;
mSearchPerspective=null;
mavaailableoperations=null;
mRelatedDocSearch=false;
logger.debug(getClass(),此方法名称,
“初始化为空/默认值。”);
}

这是一个例子,Java代码中很少使用这种命名约定。

这不是语法问题,而是项目指南问题。有些项目对变量、成员、参数等有命名约定

  • 我只是站在会员的立场上
  • p代表参数

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

前缀
m
p
本身不是Java语法的一部分,它们只是一些项目中使用的约定。
m
是“成员”的缩写,
p
是“参数”的缩写通过这种方式,当读取一长段代码时,可以清楚地知道每个变量来自何处以及它的含义。现代IDE对成员的颜色不同,因此此约定可能不像以前那样有用,但仍在某些项目中使用。

这些只是命名约定

  • “mXYZ”通常用于类的成员变量
  • “pXYZ”用于方法的参数
  • 我认为这些只是C++世界的残留物,或者可能是java的早期IDE版本,在这里很难看到变量的格式设置,并确定这是局部变量还是类变量。


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

    我的眼睛…它使用匈牙利符号,带有
    m
    =成员和
    p
    =参数(我想)。变量名只是,嗯,变量名。它们没有什么特别之处。这是一种编码惯例(许多惯例之一)区分参数(pXXXX)和成员变量(mXXXX)。现在不太流行了。+1最后一句应该突出显示。任何像样的Java IDE都允许对字段、局部变量和参数使用不同的格式,因此“识别变量来自何处”的参数不再有效。由于变量前缀在Java代码中已经是一种非常不常见的约定,您甚至可能会混淆阅读您的代码的人(如此问题所示)。