Tag: 遗留的

你可以做一个遗留的代码库,对提高质量有最大的影响?

当你在一个传统的代码库中工作时,将会对时间产生最大的影响,从而提高代码库的质量? 删除未使用的代码 删除重复的代码 添加unit testing,以提高覆盖率低的testing覆盖率 跨文件创build一致的格式 更新第三方软件 减less静态分析工具产生的警告(ieFindbugs) 代码库由许多开发人员在不同的专业知识水平下编写而成,其中很多领域都没有经过testing,有些则无法testing,所以没有花费大量时间编写testing。

将C源代码转换为C ++

你会如何将相当大的(> 300K),相当成熟的C代码转换为C ++? CI所考虑的types被分割成大致对应于模块的文件(即,比典型的基于OO类的分解更小的粒度),使用内部链接来代替私人function和数据,以及用于公共function和数据的外部链接。 全局variables被广泛用于模块之间的通信。 有一个非常广泛的集成testing套件可用,但没有单位(即模块)级别的testing。 我想到一个总的策略: 在C ++的C子集中编译所有东西,并使其工作。 将模块转换为巨大的类,以便所有的交叉引用都以类名称作为范围,但将所有函数和数据作为静态成员,并使其工作。 通过适当的构造函数和初始化的交叉引用将巨大的类转换为实例; 用适当的间接访问replace静态成员访问; 并得到那个工作。 现在,将项目作为一个不适当的OO应用程序来处理,然后编写unit testing,在依赖关系易于处理的地方进行分解,然后将其分解成不同的类。 这里的目标是在每次转换时从一个工作程序转到另一个工作程序。 显然,这将是相当多的工作。 这种翻译有没有案例研究/战争故事? 替代策略? 其他有用的build议? 注1:该程序是一个编译器,可能数以百万计的其他程序依赖于其行为不变,所以批量重写几乎不是一个选项。 注2:来源近20岁,每年可能有30%的代码stream失(线路修改+增加/以前的总线)。 换句话说,它被大量维护和扩展。 因此,其中一个目标是提高可信度。 [为了这个问题,假定C ++的转换是强制性的,而把它留在C中不是一个选项。 增加这个条件的意思就是去掉“把它留在C中”的答案。]

熟悉大型代码库的最佳方法是什么?

join已经存在的大型代码库的现有团队可能会令人望而生畏。 什么是最好的方法; 广阔; 试着从代码中得到关于所有东西如何链接的一般概述 狭窄; 重点关注一小段代码,了解它们如何完全工作 select一个function来开发和学习 尝试从类图和uml中获得洞察,如果可用(和最新) 还有其他的东西吗? 我正在研究目前约20k行的C ++应用程序和库(编辑:在macros伟计划的小事!)。 在行业中,我想你会得到一个有经验的程序员的介绍。 但是,如果情况并非如此,您可以如何尽快开始增值? – 答案摘要: 在debugging模式下浏览代码,看看它是如何工作的 与比你更熟悉代码库的人配对,轮stream成为编码人员和观看/讨论人员。 在团队成员之间轮换合作伙伴,以便知识传播。 编写unit testing。 从你认为代码如何工作的断言开始。 如果结果如你所料,你可能已经明白了代码。 如果不是的话,你就有一个难题要解决和/或查询。 (谢谢Donal,这是一个很好的答案) 通过现有的function代码unit testing,类似于上面的方式 阅读UML,Doxygen生成的类图和其他文档,以获得广泛的代码感觉。 进行小的编辑或错误修复,然后逐渐build立起来 记笔记,不要跳进去开始发展; 花费时间理解比生成杂乱或不恰当的代码更有价值。 这篇文章是“最好的方式 – 熟悉自己的代码库”的部分副本