Java @functional接口的命名约定

Java @functional接口的命名约定,java,naming-conventions,functional-interface,Java,Naming Conventions,Functional Interface,按照惯例,类型应该用名词命名,这没关系。然而,@functioninterface是一种特殊的类型-对象类型,其作用类似于函数/方法。在函数的情况下,我觉得选择动词更自然,例如decoration.apply(o)而不是名词decorator.apply(o)。还有一些名词表示一种活动,例如装饰.apply(o) 如果我看一下软件包,所有函数都是用名词命名的:函数,操作员,消费者,供应商。。。我应该更喜欢名词、动词还是表达动词的名词 更新 有时,我们在factory方法返回对象/函数时得不到什么

按照惯例,类型应该用名词命名,这没关系。然而,
@functioninterface
是一种特殊的类型-对象类型,其作用类似于函数/方法。在函数的情况下,我觉得选择动词更自然,例如
decoration.apply(o)
而不是名词
decorator.apply(o)
。还有一些名词表示一种活动,例如
装饰.apply(o)

如果我看一下软件包,所有函数都是用名词命名的:
函数
操作员
消费者
供应商
。。。我应该更喜欢名词动词还是表达动词的名词

更新

有时,我们在factory方法返回对象/函数时得不到什么帮助:

// toList factory returning Collector instance
list.stream().filter(...).collect(toList()); 

@functioninterface
只能标记类型(类、接口、注释、枚举)

要命名一个类型,你应该使用一个名词,而对于一个方法,你需要一个动词

班级 类名应该是名词,大小写混合,每个内部单词的第一个字母大写。尽量保持你的类名简单和描述性。使用完整的单词,避免使用首字母缩略词和缩写词(除非缩写词比长格式更广泛使用,如URL或HTML)

方法 方法应该是动词,混合大小写,第一个字母小写,每个内部单词的第一个字母大写

run(); 
runFast(); 
getBackground();

下面是一个如何定义功能接口的示例

@FunctionalInterface
interface Decorator {

    void decorate();

}
在代码中,它看起来可读

Decorator decorator = () -> {};
decorator.decorate();

我对“装饰与装饰”的思考:

“装饰”
更多的是描述过程/结果,而
“装饰者”
是启动该过程/获得该结果的机制/工具/手段

如果我在代码中看到
装饰
类,我会想到一系列装饰材料(如装饰品、油漆、墙纸),而不是一个真正装饰的人

如果我看到
Decorator
Painter
,我会期待像
decoration()
paint()
这样的方法,因为这是他们可以/应该做的


比较
suppliance/supplier->get()
consumer/consumer->accept(t)

类名是名词,方法和函数名是动词-如果您在规范中看到某个名称是名词-这意味着某个地方有一个类或接口有这样的名称。无论何时你有一个对象——它是由名词来识别的,无论何时你有一个行为——它都是由动词来识别的。
Decorator decorator = () -> {};
decorator.decorate();