2010-05-12 18 views
19

说出如果是10人项目,则在项目发布稳定版本一段时间后,原始程序员将退出2-3个程序员。如何在这种情况下维护代码?如何在原程序员退出后保持代码可维护

我的想象力是在项目发布版本之后回顾代码,并在之后继续审查它?也许分成2-3个小组,并让每个小组审查部分代码。所以至少有3-4人熟悉部分代码。这是否工作?公司如何处理这个问题?

通常在审阅代码上花费了多少时间?请告知,感谢社区。

+2

你想解决什么问题? – Anonymoose 2010-05-12 06:33:18

+0

查看所有投票! – zaf 2010-05-12 06:45:33

+1

如果您只是将代码分成团队,那么没有人会知道整个架构的工作原理。如果代码是可分的,每个人至少需要了解这些部分如何组合在一起。我的直觉是,有人需要采取一个高层次看位如何配合,以及其他教大家。从那里开始,团队可以浏览每个部分并进行描述。 – Carlos 2010-05-12 07:30:54

回答

25

在程序员离开之前,您可以使代码保持可维护状态。定义编码标准,编写好的代码,编写出色的评论,当然,同行评审代码往往是

+2

+1完全正确 – faya 2010-05-12 06:34:46

+5

嘿更合适,我敢肯定,斯坦会喜欢这个建议! – richq 2010-05-12 06:37:18

7

我认为最重要的事情是获得可维护的代码是在程序员离开之前编写代码的单元测试。

+3

..比“在程序员离开之前” - >“编写代码之前”更好); – Juri 2010-05-12 06:40:14

+0

当然是的;-) – khmarbaise 2010-05-12 06:41:01

+0

或者差不多一样好,在编写代码的同时写测试 – 2010-05-14 14:04:54

4

听起来你的问题是你试图增加你的项目的“bus factor”。实现这一目标的合理方法是要求每段代码在存储库中都有多个对象,或者至少要定期检查对方的代码,以便多位开发人员熟悉与对方的代码部分。除此之外,应该要求使用Doxygen,Javadoc或其他一些标准文档工具记录每一个类别和方法,并且需要一套标准的编码标准,以使代码对于开发人员来说是直观和易于理解的从未见过它(例如,要求类名称为TitleCased,函数为camelCased,名称为描述性的和不言自明的)。

此外,要求为每个组件创建单元测试是合理的。单元测试不仅可以及早发现错误,还可以提供代码使用方式的示例。

+0

实际上,基于那些博客文章,他正在努力减少他的公交系数。 ;) – 2010-05-12 07:00:06

+0

@尼克,好点。通常情况下,“巴士因子”是开发商谁可以通过总线被击中,而不会导致项目崩溃数量,但在文章中我联系他们向后使用它。 – 2010-05-12 10:24:29

2

你能做什么完全取决于退出的程序员如何完成他们的工作。如果他们的代码是“聪明的”,而且很少或根本没有文档和测试,那么你可以做的最好的做法是将他们制作的模块分开,扔掉,并用更好的编码标准重写它们。这可能确实比想办法解决现有代码的工作少得多。

2

简单地教你剩余的程序员如何阅读现有的代码的问题是,如果他们决定去更绿的牧场,你会再次回到原点。

你只落得不得不学习如何阅读不同的编码器的工作(这可以像读独特和外语),你的员工浪费时间越来越长......

至于其他的一些受访者有人说 - 关键是让每个人都按照标准编写代码(这意味着你只需要教新员工一套标准),并让每个人定期检查对方的代码,以确保每个人都遵守标准,并且都朝着同一个方向前进。

0

如果你有一个稳定的构建,那么你担心什么。代码可以放在源代码控制之下。在原来的程序员离开之前,您将从他们的全部知识转移到新的资源。或者它是无计划的。

无论如何,除非你有错误修复这些相关的代码,我不认为有什么可担心的。

1

假设代码有没有单元测试,这将是一个良好的开端,通常单元测试代码之前写的,但我觉得在没有他们的情况下,我将它们添加它迫使我明白我的测试代码。没有先了解它,我就无法测试代码,这似乎是您的担忧。人们只能维护他们理解的代码。

另一个优点是单元测试是生活中他们不离开公司:)

与您的代码进行测试(至少它的重要部分)的人不太怕维护代码的风险更改代码被降低。如果编码人员想要改变一个不太理想的代码段,那么一旦单元测试仍然通过,全世界都可以。

3

像其他人说的那样,在程序员离开之前确保代码是可维护的确是非常重要的。我不会重复所有其他职位,因为他们都是真实的,都提到重要的事情。

我只会再添加一件在我曾经遇到过的情况下工作得很好的东西: 为项目创建一个维基页面,描述重要的设计决策,重要的类,架构以及可能的几个入门点(当你想达到这个目标时就开始上课)。 也可能包括几个“如何”:如果你想添加新的功能,这些是扩展点,这是做到这一点的最佳方式...

是的,我知道这是很多工作。但一旦完成,它就是一个很好的信息来源。

问候, 扬

2

你必须开始编写文档,创建单元测试并公布的javadoc。