Vap*_*nus 5 java naming-conventions
我有一个关于Java命名约定的快速问题.我读了一些指南,但没有人回答我的具体问题.
我应该使用什么字序?
例如,我有一个抽象类:
abstract class Requirement
Run Code Online (Sandbox Code Playgroud)
如果我想生孩子,我该如何命名?
像这样:
class RequirementOnlyPlayer extends Requirement
class RequirementOnlyConsole extends Requirement
class RequirementArgumentCount extends Requirement
Run Code Online (Sandbox Code Playgroud)
或者像这样:
class OnlyPlayerRequirement extends Requirement
class OnlyConsoleRequirement extends Requirement
class ArgumentCountRequirement extends Requirement
Run Code Online (Sandbox Code Playgroud)
或者以其他方式?我想这是我的第一个例子,但我不确定.
这就是如何使用这些要求:
addRequirement(new RequirementOnlyPlayer());
addRequirement(new RequirementArgumentCount(3));
Run Code Online (Sandbox Code Playgroud)
任何帮助或反馈将不胜感激!对不起,如果这是一个"nooby"问题,我对Java和编程总体上非常有经验,但出于某种原因,我仍然不太确定.
如果查看标准Java库,通常会找到父类作为后缀,或者子类具有完全不同的名称.一些例子 :
// in java.io - often suffixes:
abstract class InputStream
class FilterInputStream extends InputStream
class BufferedInputStream extends FilterInputStream
class ByteArrayInputStream extends InputStream
// in javax.swing - often completely different names:
abstract class JComponent
class JLabel extends JComponent
abstract class JTextComponent extends JComponent
class JEditorPane extends JTextComponent
Run Code Online (Sandbox Code Playgroud)
然而,所有这些例子的共同之处在于它们用简单的英语有意义.我认为我们经常找到父类的名称作为子类的后缀的原因仅仅是因为形容词被放在他们用英语限定的名词之前(并且子类通常采用父类的名称,并且添加一个形容词来解释它们的特殊性).如果你用法语这样的语言命名你的课程,你通常会想要做相反的事情!
在一天结束时,我会说你应该听听正确的英语,我认为这将是你的第二个主张.但我也会考虑完全放弃"需求"部分 - 毕竟,OnlyConsole(或ConsoleOnly?)可能听起来像是a Requirement,就像Timestamp很明显是一种Date.