Java中的术语是什么?

3

我正在实现一款应用程序,使用Posnett、Hindle和Devanbu提出的可读性公式计算Java文件的可读性(这里)。

该公式为:z = 8.87 - 0.033 * Volume + 0.40 * Lines - 1.5 * Entropy

他们说Entropy是根据术语(标记或字节)的计数以及唯一术语和字节的数量来计算的。

我做了一些研究,但找不到Java术语的定义。我唯一找到的是这个,它列出了一些“有用的Java术语”,但我不认为这些是Java中的所有术语。

那么,我应该把什么作为Java术语?有人能给我解释吗?

2个回答

2
您在混淆“术语”一词的不同用法。两个相关的定义是:
  • 在特定语境下具有特殊含义的单词/短语。 比如,生物教师可能会说“明天的测验要学习第14章的术语”。这是您“有用的Java术语”列表中“术语”的用法。
  • 一系列事物中的一个元素。 例如,如果你有一个字符序列 qwerty,那么 w 是一个术语,因为它是那些字符之一。这是熵计算中使用的定义。具体来说,“术语”可以表示源代码中的一个单独字符(字节),或者在Java中表示任何在Java语法中意味着一个东西的代码部分(int foo = bar-3; 包含了 intfoo=bar-3; 这些标记)。

注意:在处理编程时,一个字节有时可以与一个字符同义,因为字符存储在一个字节的内存中。


非常感谢您的回答!您的回答正好符合我的需求。但是,为了澄清一下:例如,有这样的代码,它有17个标记和83个字节,对吗?我考虑了这些标记:publicclassExample{}{}publicvoidexampleMethod() System.out.println() "Hello, world!";。在计算标记时,我有没有犯错? - João Alves
1
我会将 {} 视为单独的标记,同样也是对于 ()。因此,我计算出了 21 个标记。至于字节数,不清楚是否应该计算空格(缩进) - 我会选择一些合理的方法(包括或不包括空格)。这没有一个确定的答案。 - k_ssb
如果可以的话,我想再问你一个关于这个主题的问题。我正在寻找一种计算令牌数量的方法,并找到了这个答案。我能用这种方法来计算Java令牌的数量吗?还是必须使用解析器来解析代码?@pkpnd - João Alves
计算标记应该使用解析器完成。这已经与您发布的问题相去甚远,因此如果您需要更多关于使用解析器的帮助,请发布一个新问题。 - k_ssb

1
这并不特定于Java。在Java中有一个叫做“term”的东西,在JLS中可以找到,但这不是他们所讨论的内容。他们谈论的是通常情况下的标记或字节,而不是特定于语言的。在一个地方,似乎同时提到了标记和字节,这似乎是一个错误。
引用: “这里的术语可以是字节或标记,并且我们在本文中都使用。” [强调添加]

那么,你知道在这种情况下我应该考虑什么作为一个术语吗?应该是Java关键字吗?操作数?运算符? - João Alves
1
Java标记:关键字、标识符、字面量、运算符、标点符号字符,或者字节。 - user207421

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接