c++ - 需要代码度量。最佳代码中 h 文件中的 LOC 与 cpp 文件中的 LOC 的比率

标签 c++ software-estimation

在给定 h 文件中的 LOC 数量的情况下,我可以估计最佳代码(桌面应用程序)中的 C++ LOC 数量是多少?

背景: 我正在进行工作量估算和将 C++ 软件移植到 C# 的计划。

我的第一个想法是创建一个基于 LOC 的粗略估计,并使用移植到剩余 LOC 的 LOC 来跟踪流程。假设移植速度为 200LOCs/天,我得出 1.5 人年。如果我把这个数字给客户,我肯定拿不到契约(Contract)。

仔细查看我发现的代码后,该代码非常低效,使用了很多 C&P 代码,实现了自己的容器类等。 所以 C++ 的 LOC-Number 似乎没有反射(reflect)实现相同功能的努力。现在我的假设是,头文件应该更好地反射(reflect)功能。

最佳答案

没有。头文件的大小是关联代码文件大小的一个非常糟糕的代理。 header 仅显示 API 的入口点,它可以隐藏 API 所需的内容。

换句话说,声明单个函数的 header 仅表示该实现文件中有一个公共(public)函数。实现文件中可以只有一个函数,也可以有数百个。它们都不是更好,任何一种开发方法都没有错。这只是意味着您不能使用 header 来估算工作量。

对于 100k SLOC 程序,使用 SLOC 作为衡量标准会有些牵强,因为您将花费更多时间进行测试而不是开发。如果您有权访问应用程序的功能文档,请考虑使用 function points反而。据我所知,它们是周围较少损坏的启发式算法之一。

就开发而言,不要忘记您可以从 C# 调用 C++ 代码,并且 C++/CX 可以集成 C#。如果您可以增量重写或多或少的独立组件,这可以减轻一些移植痛苦。

关于c++ - 需要代码度量。最佳代码中 h 文件中的 LOC 与 cpp 文件中的 LOC 的比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31905452/

相关文章:

project-management - 如何在稀缺的规范项目上竞争以避免团队死亡行军

software-estimation - 当有高级支付工具可用时,为什么人们花很多时间搜索 “free”工具集并进行破解?

c++ - POSIX C/C++ 日志文件(VEX V5 大脑)

c++ - 我如何跨线程同步变量? C++

c++ - 四个旋转顶点之间的 HitTest

c++ - 具有前向声明的不完整类型的 unique_ptr 将无法编译

c++ - 较新版本的 GCC 抛出 reinterpret_cast 错误

javascript - 使旧的 Java Web 应用程序在新的 IE 8 浏览器上运行时有什么严重的问题吗?