4

关于基于 LOC(代码行)的数量理解程序需要多长时间,是否有任何广泛的、过于笼统且几乎无用的规则?

(我知道任何规则都是宽泛的、过于笼统的,而且大多是无用的。没关系。)

(有问题的语言是 Delphi,但这不重要,因为我正在寻找广泛的、过度概括的和大多无用的规则。)

4

8 回答 8

5

决定理解一个程序需要多长时间的不是 LOC 的数量,而是复杂性。

如果我的程序有 100,000 行打印语句,我认为该程序非常清晰易懂。但是,如果我有一个嵌套十深的 for 循环的程序,我认为这将需要更长的时间才能理解。

圈复杂度可以粗略地表明代码的理解难度,并且可以发出有关代码的其他一些警告标志。

于 2009-07-06T12:27:16.367 回答
4

一些关于同行代码审查的论文说它应该在每小时 100 到 400 行代码之间。

于 2009-07-06T12:39:47.007 回答
3

你不能用谷歌搜索这个,因为每个使用特定语言编程的人都会有不同的近似数字。

您正在尝试编写Drake 方程来编写程序。

这就是我的意思。

关于程序编写者。

  • 每个人都有不同的编写和评论代码风格
  • 每种编程语言都有不同的细微差别和可读性
  • 即使使用相同的语言,算法也可以以多种方式实现
  • 不同人使用的数据结构往往千差万别
  • 代码如何分布在源文件中的决定也会随着个人喜好而改变

转移到阅读代码的人身上。

  • 人对语言的熟悉程度很重要
  • 熟悉使用的算法和数据结构模式很重要
  • 该人一次可以保留的信息上下文量很重要

将重点转移到环境上,重要的事情将是。

  • 分心的程度(对于程序员和试图阅读程序的人来说)
  • 接近程序员的代码发布时间
  • 读者的未决活动和动机
  • 热门活动(假期、体育赛事、电影上映日期!)
于 2009-07-06T12:26:41.997 回答
3

我的理论是它是 O(n 2 ) (因为你必须理解每一行与其他每一行)。

但是,像往常一样使用 big-o 表示法来获取实际数值时,这个答案很宽泛、过于笼统并且几乎没有用处。

于 2009-07-06T12:31:40.470 回答
3

对于有经验的代码审查者来说,代码审查指标(这不是同一件事,但几乎可比)将这个数字放在每小时大约 50-100 个 LoC 的范围内。

这当然也取决于他们在评论中寻找的内容、语言、复杂性、熟悉度等……但这可能会给你一个普遍的过度概括。

于 2009-07-06T12:36:24.057 回答
1

我正在寻找宽泛的、过于笼统且大多无用的规则。

在我看来,您只是想找到一种方法来估计学习新的管理代码库或其他东西所需的时间。在这种情况下,请在线查找代码片段,并计算您理解它需要多长时间。将其除以代码段中的行数。添加一些填充。砰!这是你的规则。

于 2009-07-06T12:30:20.033 回答
1

看看COCOMO方程。它们包含基于源代码行的广泛、过度概括且大多无用的规则。

于 2009-07-06T12:37:30.267 回答
0

除了“程序有多复杂?”之外,其他变量包括“你对它的理解程度如何 ” 以及“您对其他事物的理解程度如何,例如程序的功能规范?”

当我开始使用一个新程序时,我会尝试尽可能地理解它!具体来说,我尝试:

  • 了解某人希望我进行更改的功能规范(如果没有人希望我更改程序,那么我根本不需要了解它)

  • 查找并理解现有程序的最小可能子集,这将使我能够在不破坏任何其他先前/现有功能的情况下进行更改。

于 2009-07-06T12:37:24.463 回答