在C++中,据我所知,将const参数添加到这些不会改变的变量和这些返回值的方法是一个很好的做法,例如:
bool ExpenseManager::checkCategory(const string &userName, const string &categName) const{}
Run Code Online (Sandbox Code Playgroud)
我的问题:final像const在c ++中一样使用Java 是一个好习惯,并声明特定的方法和/或变量final(比如为构造函数(public Something(final String haha))传递的值?
请注意,final在Java 中声明参数是一个实现细节,而constC/C++中的参数更改了方法签名!final只表示变量不会改变.变量CAN引用的任何对象都会发生变化.因此,final对于方法的调用者来说意味着什么.相反,const参数定义了与调用者的契约:该方法承诺它不会改变通过参数传递的任何数据.使用java,您无法创建此类合同,因此您必须回退到不可变对象或防御性副本.
所以回到你的问题:由于final是一个实现细节,在考虑接口时无关紧要.这是一个品味问题.有些人,特别是那些来自功能语言的人喜欢final,因为他们声称变量只有在某个地方实际变异时才应该是可变的.其他人根本不喜欢添加视觉噪音的添加关键字.
通常,这个决定是在项目层面上做出的:要么final在项目的任何地方使用,要么在任何地方使用.项目中的每个开发人员都应该做同样的事情,否则代码看起来会不一致.
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |