Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java命名指南(特定类类型命名-非约定)_Java_Syntax_Naming - Fatal编程技术网

Java命名指南(特定类类型命名-非约定)

Java命名指南(特定类类型命名-非约定),java,syntax,naming,Java,Syntax,Naming,(这与Java约定无关) 我正在寻找一个指南,可以帮助我了解如何命名以特定方式运行的类 我在网上看过,并在各种网站上读到了这方面的信息;但是,我所学到的是什么是不能做的。i、 e下套管/破折号/美元符号 但我真正想知道的是如何命名这样的类: (通过查看类似的项目,我发现人们将其命名为“模块”) 在本例中,我将把它们命名为“函数” 还有像这样的超类 PersonInteractionFunction 这将处理以下事项: PersonWalkingFunction extends PersonIn

(这与Java约定无关)

我正在寻找一个指南,可以帮助我了解如何命名以特定方式运行的类

我在网上看过,并在各种网站上读到了这方面的信息;但是,我所学到的是什么是不能做的。i、 e下套管/破折号/美元符号

但我真正想知道的是如何命名这样的类:

(通过查看类似的项目,我发现人们将其命名为“模块”) 在本例中,我将把它们命名为“函数”

还有像这样的超类

PersonInteractionFunction
这将处理以下事项:

PersonWalkingFunction extends PersonInteractionFunction
PersonSittingDownFunction extends PersonInteractionFunction
PersonDrivingFunction extends PersonInteractionFunction
那么,“功能”这个词在这里正确吗

我在哪里可以找到正确的术语?

我在这里既不使用“模块”也不使用“功能”

“模块”与存储器相关联。例如,它可以是一个类,用于保存集合或收集有关可以逻辑分组在一起的类的信息

“功能”是将某物转化为另一物的手段。例如,
函数
将人变成兔子


我会使用“Action”这个词,因为您定义了一个方法
interact

没有关于如何命名类和方法的规则/约定。你必须遵循常识:明确地说出事情的名称,这样你和其他人就可以理解它是什么以及它的作用

例如,对于房屋中的按钮,具有与此按钮交互的功能。您可以想到不同的有效命名。该类可以命名为
HouseButtonFunction
HouseButtonAction
,等等。该方法可以命名为
interactive()
action()
,等等。区别取决于你的方法到底是什么。如果它切换某些内容,请使用
toggle()
使用您认为最容易理解和最明确的按钮。在您的情况下,personnaly,由于您的类定义了此按钮的交互,我建议将其命名为
HouseButtonInteraction

在所有的情况下,我强烈建议评论你的东西,这样就不会有更多可能的混淆

/**
 * This method is called when a person interact with the House button.
 * This method will action the given object
 * @param p : the person that interact with the house button
 * @param o : the object to action
 */
public void interact(Person p, Object o) { ... }
同时,你的命名也要始终保持一致。i、 e.如果为房屋按钮命名类
HouseButtonFunction
和方法
interact
。请勿更改汽车按钮的命名:

//not to do !!
class : CarButtonAction
method : actionObject()
//To do
class : CarButtonFunction
method : interact()

我建议您阅读一篇关于命名的最著名的经典文献,它被称为“Ottinger的变量和类命名规则”。 这本书是蒂姆·奥廷格在1997年写的,至今仍与当时的情况相关


我还建议您阅读Robert C.Martin(Bob叔叔)和Kent Beck写的书

理想情况下,类的名称应该是一个名词,它是特定的,并且对于阅读代码的人来说很容易理解。考虑到超级类似乎也被命名为
Function
,将类名结尾为“Function”是可以的。但是如果你可以重命名这个超类,我会将它们命名为以
Handler
结尾。像

  • 步行搬运工
  • 人员设置下处理器
  • 人力车手

etc

没有评论中所述的硬性规定。命名约定是一种最佳实践,所以当所有开发人员都遵循特定的命名标准时,他们就可以很容易地有效地关联和理解代码,否则建立关系是一项繁琐的任务

在一般实践中,一个类应该被称为名词,其中as方法指的是动作,所以它们与动词相关联

在上述情况下,我建议采取类似的措施

HouseButtonsFunction=>House或HouseBotton

按钮开关功能=>开关或开关按钮

CarButtonsFunction=>CarButton

PersonWalkingFunction=>Walker

PersonSittingDownFunction=>Sitter

PersonDrivingFunction=>驱动程序等


请注意,这完全取决于您遵循的命名约定

你的“功能”是什么?我真的不明白你说的是什么意思。我想这是没有规则的。只有常识说“给东西命名,这样你和其他人都能理解它是什么”你可以试试这个:我可能会遵循中的类的例子。是的,但我希望它被普遍理解,所以我不能到处给它命名HouseButtonsWidget或类似的东西,因为它会被误解为java小部件,《干净的代码》中的第2章是Bob让我为选集写的那篇文章的更新版本。如果你能得到每一个的副本,你会看到一些进化(我不会从你这样做中赚一分钱)。
//not to do !!
class : CarButtonAction
method : actionObject()
//To do
class : CarButtonFunction
method : interact()