即使工作顺利,与上级和老板一起审查课程是否很好?


18

在我公司中,在交付任何项目之前,老板要求我的前辈审查由我或其他团队成员编写的程序,有时老板也会坐在一起与我们一起审查。

我认为这是获取知识的一种好方法,但是有时候程序运行良好时,经过审查它们就无法正常工作,因此我需要再次查看我的程序。

他们说,评审有助于优化程序和查询的执行,但是相对于程序的实际功能,我们能否更喜欢优化?


6
您如何确定它是否可以正常工作,而又不进行不熟悉您自己的测试的习惯的人进行复查
棘轮怪胎2014年

因为他们在测试团队对模块进行全面测试后会检查代码。
Himanshu 2014年

15
@Himanshu:测试后进行审查肯定为时已晚。应该对进行中的工作进行审查。
2014年

3
接受这种做法。我非常希望我们能在我的团队中做到这一点。它有助于消除知识孤岛(对我们来说是个大问题),并确保您的队友可以使用您的代码。如果您的评论意味着您的代码有时会被重写,那是一件好事。甚至伟大的程序员有时也会编写错误的代码。我们中有些人会希望有更多的时间回去整理一下。这应该是一个与比您更有经验的人一起获得良好学习经验的机会。不要将其视为攻击您的代码的人。尝试帮助人们将您培养成为经验丰富的程序员的人。
jpmc26 2014年

1
如果在团队审查过程中团队成员感到失去了很多动力的情况下,通常会“正常工作”的代码被撕成碎片,那么您可能应该考虑使用结对编程,以便在编写代码时对其进行审查。书面。
2014年

Answers:


38

“做得好”确实是一个很好的指标,但是如果您是团队中唯一能够解密所写内容并加以维护的人,那么该代码对于公司的中长期而言几乎是一文不值。

一个好的代码至少是:

  • 按预期工作
  • 可读/清晰
  • 易于维护
  • 易于扩展以适应未来的变化
  • 安全
  • 没有不必要的依赖
  • 正确处理非名义案件
  • 等等

(其中一些要求实际上是重叠的,但最好单独考虑...)

代码审查的目的超出了“工作”部分的范围,可以通过自动测试来完成。

我个人知道,将某些工作拆散并不得不从头开始进行重建很烦人。但是,通常这是由于高级/技术负责人的沟通不畅造成的。因此,如果您认为您下次必须重写得太多,请在写一行之前,先去审阅一下审稿人,然后尝试获取尽可能多的关于他的期望的详细信息。如果代码审阅者团队在每个开发人员都可以参考的正式文档中总结他们的期望,那也可能很棒。

从更积极的方面来说,会议也可能是分享优秀实践/设计的机会。


1
我要补充一点,测试代码并不意味着没有错误,例如可以限制软件崩溃的情况。
dysdyes 2014年

3
我同意,并且也应该对自动测试进行代码审查,以确保它们在测试正确的东西。
Xavier T.14年

12

我将您的问题解释为“我的功能代码是否可以在审查中被破坏到甚至无法编译?”

是的,它可以。一般来说,审查期间,你看如何你的代码做它做什么。当您要提交代码时,表示您已经完成了程序的特定部分。

您说它有效。然后进行测试以验证这一点。通过测试的模块并不意味着不应再次触摸该模块。

出现功能的模块仍然可能是一场灾难,等待着您的等待,无论是在运行时还是在您或其他人必须对其进行维护的几个月内。通过在评论中更改您的代码并指出问题出在哪里,您的评论者正在(希望)尝试实际教您一些知识。


3

同行评议无疑是一种很好的学习方式。某人可能会看到不同的东西,他们对您有不同的经验,应该能够做出改进。这不应该是贬低的,我希望任何开发人员都能够评论和建设性地批评任何人的代码!

在我看来,其中一些“改进”实际上正在做出重大更改,因为(正如您所期望的)审阅的开发人员在软件方面的经验少于作者。

这种趋势是它的自我反馈,也许您的代码难以遵循或维护?您的评论有价值吗?绝对!我可以看到令人沮丧的是,有一个正常工作的代码随后被同行打破了,您不应该灰心-您应该努力保护自己的代码不受这些更改的影响。

然后,问题就变成了如何保护程序的功能,以便您可以在完成审阅后知道该功能仍在工作。我的建议是确保您拥有不错的单元测试范围。这样,无论您/您的审阅者/您的继任者何时更改代码,他们都可以确信所做的更改是安全的。

ETA:我刚刚发现了您的评论中的一个,我敢肯定,这毋庸置疑,但是代码审查应该在测试团队开始之前进行。否则,他们不会测试最终产品。


1
集成测试对于检测破损也非常有用。
jpmc26 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.