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代码中已经是一种非常不常见的约定,您甚至可能会混淆阅读您的代码的人(如此问题所示)。