我曾在两家公司工作,在代码评论方面,每个公司都有不同的方法:

在第一家公司中,团队负责人进行了代码审查,每个模块完成后要求。

但是,在第二家公司中,团队负责人不需要进行任何代码审查,只是检查了功能和设计问题。

所以我很困惑。真的需要代码审核过程吗?如果是,为什么?如果不是,为什么不呢?

有帮助吗?

解决方案 10

代码审查: :代码审核过程必须是 重要 一方面,我将解释谁是由于传导代码审查以及他们获得的好处而获得的好处。

1.由于代码审查的传导,公司获得的福利:如果进行了频繁的代码审查,那么该公司可以以更好的优化方式获得最终产品,从而帮助他们在市场上获得品牌名称,并帮助公司获得或改善当前 CMMI 等级。

2.由于代码审查的传导,对团队负责人的好处:众所周知,老师可以轻松地识别出错误,因为他们正在更频繁地审查学生的答案,因此他们可以得到一个想法,在哪些领域可能会出现错误的事情。同样,团队负责人也知道这方面出了什么问题。我们如何纠正这些问题,还可以帮助团队负责人也从初级开发人员那里获得新闻创意。

3.由于代码审查的传导,对初级开发人员的好处:初级开发人员可以轻松地获取有关代码审核过程的想法,例如:要以适当的方式创建API的编码标准,他们将学习编码的标准化,这可能会在将来特别有助于他们特别有助于他们当它们成为高级职位时。

因此,我的结论是,代码审查对所有人(即使对于团队成员来说也是如此)都是非常重要的过程,因为代码审查有助于我们在代码中纠正我们的粗心错误,因为我们都是人类,因此我们无法预测我们永远不会在代码中犯故障。

其他提示

我个人认为,每个代码都应该进行代码审查,无论您是初级还是高级开发人员,都没关系。

为什么?对于初学者来说,您的头衔并没有说明您的开发方式,高级开发人员可以从大三学生那里学到一些东西。在我们的公司中,我们转移到了团队中的其他成员之一,审查您的代码...大多数情况下,我们组成了一个“初中”和一名高级人员,因此所有每天都不会说的东西都可以是捕捉到后续行动。如果高年级学生不喜欢初级代码,他应该听取为什么大三学生这样做的原因,看看这是否是一种可行的解决方案,这是否可能会在将来使用...你是谁。

关于代码审查的重要一件事是不太好,如果您是个好人,您只会允许越来越多的凌乱代码在系统中发展。就像昨天我开始重新编写一名前雇用的JuniorDevelops所写的完整申请,而我的上帝,该代码可能需要在他离开之前进行审查。

我不明白为什么应该是Teamleader只进行评论,但它需要一个不屈服于发达的代码不好的人,并且必须是一个关心代码应该如何的人是。并非所有公司都雇用了实际关心自己的工作的人,而这些坏蛋不应被允许进行代码评论,因为他们可能只是耸耸肩肩膀,对不良代码说“好”。

无论经验如何,所有程序员都需要基本的代码审查。这是软件开发的质量控制,开源质量可能非常高的原因之一。

编辑:原因是,今天的代码审阅者稍后与维护者完全相同。如果代码对他今天没有意义,那么以后也没有任何意义,这会使错误更加昂贵。因此,在开发人员仍然记得代码的同时,今天可以理解它。此外,审阅者可能会看到开发人员错过的错误或遗漏。

不幸的是,很少有人愿意这样做,但是从商业角度看,应该是强制性的。

我在现在需要代码审查的地方工作,但不到3年前。它在我们的代码和其他人以后保持代码的能力方面取得了巨大改进。即使是高级,经验丰富的开发人员,也可以在质量检查发现或更糟的情况下在客户找到它们之前轻松而安静地修复错误。除了原始开发人员以外,至少有一个人对代码很熟悉。

通常,当组织尝试新事物时,就像我们在代码审查中所做的那样,更改会有很大的阻力。我几乎看不到这一点(我们也无法获得正式的质量检查部门。)代码审查。几乎只需要一两个评论就可以看到该值。

我发现新技术在对别人的工作或对我的代码进行审查时没有考虑过两者。我们通过对代码审查的响应方式进行了代码审查,从而相对较快地发现了新员工的能力问题。我们已经了解了哪些事情在整个编程中似乎很清楚,该部分在维护中尚不清楚。这是无价的。可能唯一需要的是关于为什么要做某件事的评论。我们发现对我们的数据库设计的一些基本误解,需要纠正报告才能真正拥有正确的信息。

通常,我在代码评论中看到的是,通过向其他人解释某些东西的行为,开发人员将脑海中打开灯泡,并意识到审稿人没有看到一个错误。

男孩可以编码审查确定那些不会遵循任何标准或使用强制性工具的牛仔程序员,并且他们的代码将在其他任何人都无法获得。它可以迫使他们加入程序或也出去。

最能抵抗代码审查的人通常是组织最需要摆脱的人,因为他们在心中知道他们的代码无法通过代码审查。

敏捷的家伙会说:“您不需要代码审查,只需配对编程并编写良好的测试” :)

代码审查是通过团队传播知识和良好实践的好方法。根据我的经验,最好确保对所有代码进行审查,并尝试改变谁查看哪个代码。

在我目前的团队中,每个人的代码都得到了平等的审查,并且必须在发布该代码之前对程序员和审阅者满意。这同样适用于更多的高级开发人员对高级开发人员进行审查的高级开发人员,初级开发人员正在审查另一个开发人员,或者其他高级开发人员相互审查。如果审稿人没有经验或不愿意审查任何特定的代码,那么他们将与另一个开发人员(也许也是原始开发人员)合作,以作为一个小组进行评论。

我从事业务已有20多年的历史,在软件公司和不同的企业工作,这些地方都没有代码审核流程。但是,我可以理解并欣赏拥有一个的好处。从本质上讲,据我了解,应该使用它们来确保遵守标准,应遵循这些标准,以便其他人能够在将来更轻松地维护代码。代码可读性也可以在审核过程中检查,因为这也将确保维护可以有效地与代码合作。

目前,我在一家小商店工作,我是单身开发人员。有时我们会引进承包商来帮助积压。这些承包商中至少有一个或两个书面代码不一定符合我或公司的标准,但它确实运行良好,至少可以理解。当我向管理层指出这个问题时,他们不在乎,他们只是想知道它是否做了我们付给他们的工作。因此,我想这仅取决于公司,以及是否干净,易于维护代码是所需的产品,或者他们只是想要对钱有效的东西。

显然,作为一个开发人员,以及必须维护代码的人,我想处理遵循某种标准的干净代码,但我并不总是有这种奢侈品,所以我会尽力而为,并处理我所拥有的东西,即使这有时意味着必须按照我自己的标准重写一些代码。

当问题更容易(并且更便宜)解决时,代码评论可以在软件生命周期中早期识别缺陷。在 Smartbear 我们已经开发了一个 同行代码审核工具 并且还对如何使代码审查有效进行了大量研究。根据客户的数据,代码审查中发现的缺陷比QA中的缺陷更便宜8-12x。仅节省成本就可以使代码审查值得,但不仅仅是这样的价值。代码审查是团队中每个人学习和改进软件开发人员的绝佳方式。

有些陷阱会导致代码审查变得效率降低,而且似乎您的组织被其中一个抓住了。对代码而不是人进行代码审查。标题在代码审查中没有任何意义。呼吁权威(您必须以我的方式做到这一点)弊大于利。改为教。高级工程师应该解释为什么应该这样做,而不仅仅是要求这样做。如果您很难解释一个概念,那也是您的学习经历。你们俩都将成为您所付出的努力的更好的开发人员。

我认为审查所有代码的代码都是过度的。审查所有代码所需的时间可以更好地花在其他地方。我认为关键代码或特别复杂的作品需要代码审查,但并非每条代码都需要审查。

我认为,无论是由初级还是高级开发人员撰写的公司,都应始终对公司使用的代码。为什么?因为如果代码有几个错误怎么办?如果在使用此代码期间,该程序崩溃了怎么办?为了阻止这些事情发生,应在使用前对所有代码进行审查。

但是那些不审查代码的公司呢?正如他们告诉消费者的“崩溃” ;-)可能是有很多技术问题的公司。

因此,让我回答您的所有问题:

  • 是的,审核过程是必要的。
  • 为什么?由于我上面说的原因。

在检查代码(审查)或之后由于错误,变得太聪明/难以理解或不遵循公认的标准实践而导致的代码之前或之后,干扰您的想法有什么区别?是你的自我吗?

您不能仅仅因为不尊重的较不尊重的团队成员对代码审查的优点或其他任何内容的优点。代码审查不是只有少数超级程序员能够掌握的高度复杂的过程。我不确定是否有许多有能力或有时间进行自我编辑的程序员或专业作家。

几个月后,您是否曾经回到一系列代码,想知道我在想什么?通过代码审查,将有更好的机会抓住它。您只是抓住了它,只比一段时间以前的程序员好一点 - 我希望。

IMO审查对所有开发人员都至关重要, 只有在进行评论的人们才有能力。过去,我在评论中拒绝了代码 SOLID, ,根据逻辑设计进行了一些依赖注入,并将代码整理到名称空间和文件夹中,并包括一小部分单元测试以验证代码。该代码被拒绝为“太复杂”,我被告知使用一个将所有内容击打在一起并删除测试的类,因为这不是公司编写代码的方式。

这样的代码审查是毫无价值的,但是与主管团队进行的代码审查通常可以照亮有关该设计的内容(例如为什么要做X和Y但不做Z)或表示实际缺陷(例如,X会导致X导致Y失败出于不正确的原因)。

当然不是代码评论 需要. 。再说一次,测试,连续集成,源控制,客户参与,分析,静态分析,体面的硬件,一键式构建,错误跟踪,列表还在继续。

除了代码评论外,我上面提到的东西是有助于确保软件质量的工具。结合技巧,运气,时间和决心;你 能够 提供高质量的软件,没有任何这些内容,但是您更有可能 惯于.

在您的情况下,没有什么可混淆的。并非每个组织都沉迷于每个最佳实践。他们可能不同意它,它可能与他们确实实施的不同最佳实践相抵触,或者他们可能认为实施它的开销对他们来说太大了。根据他们的情况,他们这样做可能是正确的,或者他们可能正在做一个虚假的经济。对于某些工具,(例如源控制)投资回报/工作比率是如此之好,以至于使用它是不费吹灰之力的。对于其他人来说,这还不太清楚。

毫无疑问,代码审查是一种引入重要开销的做法。因此,组织将寻求最大程度地减少开销,要么完全不这样做,要么仅在某些情况下(例如,对于初级团队成员或特别毛茸茸的变化)来最大程度地减少该组织。并不总是显而易见的是,与成本相比,它回报更多(在捕获错误,减少技术债务或共享知识)。大部分回报很难量化,而很容易计算您的组织花费进行评论的工时数量。量化最简单的位(减少的错误计数)很容易归因于其他因素(例如,“当然有更少的错误,更成熟”)。

我们在土耳其制作在线足球比赛。许多用户和游戏大师都可以帮助我们发挥功能。他们还对所需功能发表评论。因此,我认为,如果您有很多用户,则可以为帮助或获得徽章进行功能测试。开发人员,游戏大师和用户与论坛,支持团队和私人测试环境的折叠创造了一个社交项目。

确保需要开发团队之间的代码审查和共享经验,但是如果这不是至关重要的话,您就不必强迫自己。

我认为,冗长的第二方检查取决于您的生命周期,无论您是更敏捷还是更多的瀑布。我认为进行高级设计/检查以及更详细的级别设计检查是合理的。我认为让几个团队成员进行检查也很好。

它们是绝对必要的,因为它们几乎没有经验。

许可以下: CC-BY-SA归因
scroll top