2008-10-21 106 views
6

在我目前的工作中,我们对代码质量和编码标准非常严格。所有新员工都经历了“洗脑”时期,在这段时间,高级开发人员指导他们编写(希望)更好的代码。减少新员工的编码标准“洗脑”时间和努力

代码审查过程非常细致,通常使开发人员的审查生产力减半。有时候'洗脑'期间会拖延2到3个月。有时校正是微妙的(例如,构造IF语句以便尽可能早地短路),有时你会忍不住举起眉毛(例如,声明一个字符串并将其设置为String.Empty并在下一行分配另一个值)。

我正在寻找建议,以减少时间和精力,以获得与团队编码标准同化的新员工。

其他人在类似情况下做什么?你们使用什么流程或工具?有没有办法让这个自动化?我已经考虑过FxCop但实际上并没有尝试过它,不知道它是否真的有助于减少时间和精力,或者它甚至是正确的工具?由于逻辑原因,我们不能做配对编程如果这是一个建议。而且我会怀疑它会减少努力。

我们已经尝试维护一个内部维基的'更正',但那是凄惨的失败。缺乏执法力度,也因为“有人纠正你的错误”而不是“阅读并试图防止错误”更容易。

另外,你们是如何钻进新员工,代码质量很重要?你们是否在面试时排除了那些对质量缺乏认识的人,或者你在被雇用后是否尝试改变他们?

非常感谢。

编辑:感谢所有的答案。不知道这个问题是否有正确的答案,但我会标记为正确的,我肯定会尝试。

+1

此问题似乎是脱离主题,因为它不在讨论区范围内,如帮助中心所述。 – Will 2013-08-23 15:19:57

回答

6

花一些时间编写一个应用程序,演示所有优化代码的原则。这可以变成一本关于“瞄准什么”的手册。人们在实现具体目标的目标方面做得更好,而不是因为打击“反目标”而不断受到惩罚。同样,用正确的方向指出人们所用的时间比用所有错误的方式来描述正确的方向花费的时间要少。

您的最佳代码引擎项目也可能会故意使用常见陷阱和算法结构不佳进行次优化。关于这两者之间的区别的注释可以插入到引物中,并且具有关于如何证明与另一个相比明显不是最优的硬事实。

这不只是新手谁可以从这样的神器中受益,我自己在我的工作,我很孤立,并依靠网络编码的社区我的大多数专业发展。每个人都可以达成一致的最佳实践的一些明确例子将对我很感兴趣。

2

我不确定你是否有一些这样的地方,但他们可能会有所帮助。

  • 培训时间为新员工 - 他们得到导向上任何事情,一切关于你的公司,包括代码标准的一部分。
  • 不遵守代码标准的处罚 - 您是否有“代码标准违规罐”,他们因未遵守标准而被罚款,或者每过10次违规就必须为您提供午餐。当然,负面的动机并不总是工作
  • 删除不符合标准的提交 - 不确定是否所有源代码管理系统都允许这样做,但是如果编码器提交不符合规范的代码,那就意味着它必须去。没有理由。

最终我认为培训是你需要的,但其他两个建议往往与法西斯主义接壤,我承认。

+0

是的,我们确实有一个培训期间,一部分更常见的编码标准被分配给新员工。但就像我说的,让别人发现你的错误比试图不让自己更容易。 你现在的做法是什么样的处罚? – Fung 2008-10-21 09:24:45

+0

我真的很讨厌处罚的想法,即使我不认为它是“法西斯”,我个人不会接受这个并立即辞职。国家可以罚你不是你的同事。接下来是什么 ?在地下室创建监狱? – Barth 2008-10-21 09:25:16

2

如果您严格遵守您的编码标准,并且您正在手动完成所有这些工作,则可以通过采用多种自动化工具显着节省时间。他们会让你的高级开发人员的生活变得如此简单(我假设你使用。NET正如你所提到的FxCop):

  1. 在客户端 - 你可以使用的东西,像ReSharper R#与模板的功能,以确保代码符合你的指引
  2. 在服务器端 - 你需要设置一个持续集成系统并将FxCop等工具集成到其中。我们使用FxCop,并使用我们公司的产品PBA来表达它的功能。
0

也许它是不是真的与你问什么,但我只是想和你们分享:

一旦我的算法老师看见有人穿就可以了T恤写:“没有错误,好程序员!“然后他说:“我不这么认为,你必须有缺陷才能成为一名优秀的程序员。” - 这是一个有趣的观点。

那么,为什么你不教书写错误?我正在谈论使用反向的方式让人们成为一名优秀的程序员。

0
  1. 做一个代码标准的培训,并有一个参考文档
    • 使用代码风格检查工具 - 甚至把一些样式错误,生成错误
    • 做代码审查的承诺
    • 源代码控制系统允许设置钩子和提交队列,所以没有错误的代码去主树
    • 不时发送给大家的'经验教训'和'造型提示'电子邮件不会受到伤害。有时候,某些指导方针的“为什么”对每个人都不明显,因此很难适用,所以这样的邮件甚至可以触发每个人都可以学习的午餐/咖啡讨论。
0

我不认为你可以缩短学习周期的长度,但你可以有更频繁的代码审查比你更有经验的减少它在造成非必要的工作数量开发人员。

首先给予新手首先一些修复错误,然后像他们所做的那样检查他们的每一个修复。让他们开始修复错误的额外好处应该是他们会接触到您希望已经达到您的标准的现有代码(可悲的是,我们的比例太高了)。