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();