Java命名指南(特定的类类型命名 - 不是约定)

时间:2018-06-13 08:24:28

标签: java syntax naming

(这与Java约定无关)

我正在寻找一本可以帮助我理解如何命名以某种方式起作用的类的指南。

我已经在网上查看并在各种网站上阅读此内容;但是,我所学到的只是不该做的事情。即较低的套管/破折号/美元符号。

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

(通过类似项目,我看到有人将其命名为“模块”) 在这个例子中,我将它们命名为“Function”。

public class HouseButtonsFunction extends ButtonSwitchFunction{

@Override 
public void interact(Person p, Object...args){
    //if person turns a light switch or open-garage switch
}

}


public class CarButtonsFunction extends ButtonSwitchFunction{

@Override 
public void interact(Person p, Object...args){
    //if person turns on ignition or roof lights
}

}

还有像

这样的超类
PersonInteractionFunction

会处理以下事情:

PersonWalkingFunction extends PersonInteractionFunction
PersonSittingDownFunction extends PersonInteractionFunction
PersonDrivingFunction extends PersonInteractionFunction

这里的“功能”是正确的词吗?

我在哪里可以找到正确的命名法?

5 个答案:

答案 0 :(得分:1)

我不会在这里使用“模块”或“功能”。

“模块”与存储相关联。例如,它可以是一个包含集合的类,或者收集有关可以在逻辑上组合在一起的类的信息。

“功能”是将某些东西转化为其他东西的手段。例如,Function<Person, Rabbit>将人变成兔子。

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

答案 1 :(得分:0)

没有关于如何命名类和方法的规则/约定。你必须遵循常识:明确地命名,以便你和其他人能够理解它是什么以及它做什么

例如,对于房屋中的按钮,具有与此按钮交互的功能。您可以考虑不同的有效命名。该类可以命名为HouseButtonFunctionHouseButtonAction等。该方法可以命名为interact()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) { ... }

还要尽量在命名中保持一致。例如,对于house按钮,您可以命名类HouseButtonFunction和方法interact。不要更改汽车按钮的命名:

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

答案 2 :(得分:0)

我建议你阅读经典的一篇关于命名的文章,这篇文章名为“Ottinger的变量和类命名规则”。 它是由蒂姆·奥廷格(Tim Ottinger)在1997年撰写的,它仍然具有现实意义。

我还建议你阅读由罗伯特·C·马丁(鲍勃叔叔)和肯特·贝克撰写的Clean Code撰写的书籍Implementation Patterns

答案 3 :(得分:0)

理想情况下,类的名称应该是一个特定的名词,并且对于阅读代码的人来说很容易理解。使用&#39;功能&#39;结束课程名称考虑到超类似乎也被命名为Function,这很好。但是如果你可以重命名超级类,我会将它们命名为以Handler结尾。喜欢

  • PersonWalkingHandler
  • PersonSittingDownHandler
  • PersonDrivingHandler

答案 4 :(得分:0)

评论中没有多少硬性规则。命名约定是最佳实践,因此当所有开发人员遵循某个命名标准时,他们可以轻松地有效地关联和理解代码,否则构建关系是一项繁琐的任务。

在一般实践中,一个班级应该被称为名词,其中方法是指行动,因此那些与动词有关。

在上述情况下,我建议这样的事情......

  

HouseButtonsFunction =&gt; House或HouseBotton

     

ButtonSwitchFunction =&gt;开关或开关按钮

     

CarButtonsFunction =&gt; CarButton

     

PersonWalkingFunction =&gt;沃克

     

PersonSittingDownFunction =&gt;保姆

     

PersonDrivingFunction =&gt;司机等..

请注意,这一切都取决于您遵循的命名惯例..