Java中副作用函数的命名约定是什么?
差不多是头衔。我需要区分可怕的东西和安全的东西,而不必查看函数体内部。Java的标准是什么?我不能在函数名中加“!” 例如:Java中副作用函数的命名约定是什么?,java,function,lambda,Java,Function,Lambda,差不多是头衔。我需要区分可怕的东西和安全的东西,而不必查看函数体内部。Java的标准是什么?我不能在函数名中加“!” 例如: // convenient when you don't want to update the reference in the objects that were using // param BiFunction<T,U,T> mutableTransformation = (param,operand) -> { //... do op
// convenient when you don't want to update the reference in the objects that were using
// param
BiFunction<T,U,T> mutableTransformation = (param,operand) -> {
//... do operations that alter param using operand
return param;
}
//当您不想更新正在使用的对象中的引用时很方便
//param
双函数可变变换=(参数,操作数)->{
//…执行使用操作数更改参数的操作
返回参数;
}
通常,任何以集合开始的方法都有副作用。作为最近的约定(自Java 8以来),名称中带有of
或with
的方法没有副作用。示例是java.time
包中的新日期/时间类。我认为这方面没有一个普遍接受的约定。您能给出两个这样的函数的示例吗?正如EJoshuaS所指出的,我想不出一个通用的惯例。@EJoshuaS但是需要区分,对吗?还是我做错了什么?也许应该设定一个约定……我认为这在很大程度上取决于方法的具体内容。方法名称应该反映方法内容——那么我们应该如何为未知内容的方法推荐名称呢?此外,我认为只要名称反映函数的目的,就应该很容易推断函数是否产生副作用或是纯粹的。我不希望add
函数执行副作用,但希望print
函数执行副作用。只要你的名字是描述性的,我不认为这是一个问题。除了BigDecimal
和类似的不可变类。如果BigDecimal
是在Java8中创建的,那么它的setScale
方法可能会被称为withScale
。这不是没有副作用的约定,而是这些方法的作用。例如,以毫秒为单位制作持续时间
称为of millis
。将持续时间
添加到另一个持续时间称为plus
。是的,这些都没有副作用,但这不是名字的重点。