什么是一行代码?

Gwi*_*ore 13 lines-of-code

我意识到这个问题肯定没有"正确"的答案,但是当人们谈论代码行时,他们的意思是什么?例如,在C++中,您是否算空行?评论?只有一个开放或紧密支撑线?

我知道有些人使用LoC作为生产力衡量标准,我想知道这里是否有标准惯例.此外,我认为有一种方法可以让各种编译器计算代码行 - 那里有标准约定吗?

Cra*_*g H 23

不,没有标准惯例,每个计算它们的工具都会略有不同.

这可能会让你问:"为什么我会用LOC作为生产力衡量标准?" 答案是,因为你如何统计一行代码并不重要,只要你一直统计它们就可以了解一个项目与其他项目相关的一般规模.


xsl*_*xsl 13

查看维基百科文章,尤其是" 测量SLOC "部分:

SLOC措施有两种主要类型:物理SLOC和逻辑SLOC.这两个指标的具体定义各不相同,但物理SLOC最常见的定义是程序源代码文本中的行数,包括注释行.除非一节中的代码行包含超过25%的空行,否则还包括空行.在这种情况下,超过25%的空行不计入代码行.

逻辑SLOC测量尝试测量"语句"的数量,但是它们的具体定义与特定的计算机语言相关联(对于类似C的编程语言,一个简单的逻辑SLOC测量是语句终止分号的数量).创建测量物理SLOC的工具要容易得多,物理SLOC定义更容易解释.但是,物理SLOC度量对逻辑上不相关的格式和样式约定很敏感,而逻辑SLOC对格式和样式约定不太敏感.遗憾的是,SLOC测量通常在没有给出其定义的情况下进行说明,逻辑SLOC通常与物理SLOC明显不同.

考虑这段C代码作为确定SLOC时遇到的歧义的一个例子:

for (i=0; i<100; ++i) printf("hello");   /* How many lines of code is this? */
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我们有:

  • 代码LOC的1个物理行
  • 2代码lLOC的逻辑行(用于语句和printf语句)
  • 1评论行

[...]


Aln*_*tak 8

我会说

  • 评论数
  • 空白行计数,因为它们对可读性很重要,但不能超过一个连续
  • 带括号的行也计算,但应用与空行相同的规则 - 即5个嵌套大括号,它们之间没有代码计为一行.

我还谦虚地建议任何实际依赖于LoC值的生产力测量都是铺位:)


RHS*_*ger 5

任何一天,我能以更少的代码行结束,但有同样多或更多的工作功能......都是美好的一天。能够删除数百行代码并最终得到同样实用且更易于维护的代码,这是一件很棒的事情。

话虽如此,除非您的团队中有非常严格的编码指南,否则物理代码行是无用的统计数据。逻辑代码行仍然没有用,但至少它不会产生危险的误导。