Questions tagged «code-reviews»

该标签用于有关代码审查和代码演练的问题。有关现有有效代码的评论,请访问http://codereview.stackexchange.com

19
当其他人构建了一个过于复杂的解决方案时,您在代码审查中怎么说?[关闭]
前几天,我审查了团队中某人写的代码。该解决方案不能完全发挥功能,而且设计过于复杂-意味着存储了不必要的信息,构建了不必要的功能,并且基本上,该代码具有很多不必要的复杂性,例如镀金,并且它试图解决不存在的问题。 在这种情况下,我问“为什么要这样做?” 答案是另一个人喜欢那样做。 然后,我问这些功能中的任何一项是否属于项目规范,或者它们是否对最终用户有用,或者是否有任何额外的数据会呈现给最终用户。 答案是不。 因此,我建议他删除所有不必要的复杂性。我通常得到的答案是“已经完成了”。 我的观点是,它没有完成,有错误,没有满足用户的要求,并且维护成本会比我建议的简单方法高。 一个等效的场景是: 同事花费了8个小时的手工重构代码,而这本可以在10秒内在Resharper中自动完成。自然,我不信任手工重构,因为它质量可疑且未经充分测试。 同样,我得到的答复是“已经完成了”。 对这种态度有什么适当的回应?

5
在代码审查中给予正面评价是适当的,还是仅用于建设性批评?
我最近一直在进行大量代码审查,但是我不确定在代码审查中添加正面和/或有趣的评论会带来正面和负面的影响以及专业性。 我们使用Github作为我们团队中的代码审查平台,因此任何人都可以查看注释。我通常会尝试使用该平台,因此从头到尾的整个过程都是可见的和历史性的。

10
当我从事新工作时,如何在新地方不进行代码审查?
我新公司中的团队没有代码审查流程。 我来自必须进行代码审查的公司,因此,如果没有别人审查我提交的代码,我会感到不自在。 我坚信代码审查是一种提高质量并节省时间的方法,因为它可以尽早发现潜在的问题(请注意,我并不是在谈论结对编程)。 如何显示代码审查不是浪费时间,而是节省时间? 如果您有单元测试,可以跳过代码审查吗?

11
进行持续集成时应何时进行代码审查?
我们正在尝试切换到持续集成环境,但是不确定何时进行代码审查。根据我对持续集成的了解,我们应该每天尝试多次检入代码。我认为,这甚至意味着尚未完成的功能。 所以问题是,我们什么时候进行代码审查? 在签入代码之前,我们无法执行此操作,因为这会减慢我们无法进行每日签入的过程,更不用说每天进行多次签入了。 同样,如果我们正在检入的代码只是编译但功能不完整,那么进行代码检查就没有意义,因为大多数代码检查最好在功能完成时完成。这是否意味着我们应该在功能完成时进行代码审查,但是未审查的代码将进入存储库?

9
等待审核时该怎么办?
在提出问题之前,我必须说明情况。 我在一家公司工作,担任初级软件工程师。当我完成了自己的发展并想要投入时,其中一位年长者总是阻止我。 他总是希望我等待他对其进行审查。可以,因为通常他会发现一些错误并进行一些优化。 但是,我必须在截止日期之前提交我的代码。完成后,我打电话给他,说结束了。他通常迟到。所以我的代码也迟到了。 我的问题是,我该怎么办?我应该等他复习吗? 编辑:除了问题。我很好奇另一个问题。 编码时我想自由。我如何获得对发展自由的信任? 一些解释: 我已经和他谈过了。但这没有帮助。我们已经使用了问题跟踪器,但是没有任何审查任务。只有开发和测试任务。

12
代码是否正在审查良好做法?
当我工作的公司雇用新的经理时,他们为我们提供了在每次会议上概述某人的代码的机会。我们每两周开会一次,因此每次开发人员要在投影机上展示他/她的代码时,其他人都将讨论它。 我认为这会很棒:每个开发人员在编写代码时都会更加小心,我们可以更好地分享我们的经验。但是不知何故,我们忘记了这一要约,而要约仍然是要约。 这有什么好处,有什么缺点吗?

17
与编码风格不一致的同事打交道?
当您与倾向于编写风格上很差的代码的人一起工作时,您会怎么办?我正在谈论的代码在技术上通常是正确的,结构合理的,甚至在算法上可能是优雅的,但看起来却很丑陋。我们有: 不同命名约定和标题的混合(underscore_style和camelCase和UpperCamel以及CAPS全部或多或少地随机应用于同一函数中的不同变量) 奇异且不一致的间距,例如 Functioncall (arg1 ,arg2,arg3 ); 注释和变量名中很多拼写错误的单词 我们有一个很好的代码审查系统,可以正常工作,因此我们可以仔细研究并修复最糟糕的问题。但是,发送包含50行“在此处添加空格。正确拼写'itarator'。更改此大写字母等”的代码审核确实很琐碎。 您如何鼓励这个人更加小心并与这些细节保持一致?

11
您最好的程序员是否应该将其他所有人的代码检入源代码控制中?
svn和git之间的区别之一是控制对存储库的访问的能力。很难将二者进行比较,因为对于完全应该允许谁提交更改的观点存在差异! 这个问题是关于将git用作某个公司的团队的集中存储库。假设团队成员的技能水平各不相同,这与大多数公司中的情况大同小异。 Git似乎假设只有最好的(最有生产力,最有经验的)程序员才能签入代码。如果是这种情况,您将他们的时间花在了编写实际代码以检查其他人的代码以进行检入方面。我真的想将这个问题的重点放在最佳程序员时间的最佳利用上,而不是一般的最佳版本控制实践上。一个必然的结果是,如果优秀的程序员的大部分工作是检查他人的代码,他们会辞职吗?我认为这两个问题都归结为:审查是否值得提高生产力?

7
如何有效地监控代码审查?
我怀疑主要代码审查会掩盖我的团队。太多的代码审阅合并而没有任何注释。 在我看来,没有评论就没有代码评论。 作为团队的领导者,我如何才能正确地监视我的团队正在执行正确的代码审查过程,以及如何帮助他们最大化过程的收益? 更新资料 以为人们可能想知道任何更新。我尝试了很多在这里给出的建议。大多数已经在使用中。有些帮助。但是,问题仍然存在-当我不看时,有些人不断收到错误代码。 我发现代码审查监视没有提供给我的团队工具以使他们的代码从一开始就更好的帮助。 因此,我添加了一个名为“ jscpd”的库来检测复制粘贴。复制粘贴时构建失败。这立即消除了一个问题。 接下来,我们将尝试代码气候。 我还要对旧代码审查进行一次人工审查,每次冲刺需要半天。我正在将todos 转换为问题/票证-我发现人们正在写它们,但以后再也不会处理它们。我还将与整个团队开会,以在适当时检查代码。 总的来说,我们在朝着正确的方向前进。

7
对等/代码审查失败
我不会称自己为超级巨星开发者,而是相对经验丰富的开发者。我试图将代码质量保持在较高水平,并且一​​直在寻求对我的编码样式的改进,试图使代码高效,可读性和一致性,并鼓励团队遵循一种模式和方法来确保一致性。我也了解在质量和速度之间取得平衡的必要性。 为了实现这一目标,我向我的团队介绍了同行评审的概念。在github pull-request中两个竖起大拇指以进行合并。很好-但是我认为没有打cc。 我经常看到来自相同同事的同行评论,例如- 在之后添加一个空格会很好 <INSERT SOMETHING HERE> 方法之间多余的多余线条 在文档块中的注释末尾应使用句号。 现在,从我的角度来看-审阅者只是从表面上看待代码美观性-并没有真正执行代码审阅。化妆品规范审查以傲慢/精明的心态传给我。它缺乏实质性内容,但是您不能对此进行过多辩论,因为审阅者在技术上是正确的。我宁愿看到较少的上述评论,而更多评论如下: 您可以通过以下方式降低圈复杂度: 提早离开,避免如果/其他 将数据库查询抽象到存储库 这种逻辑并不真正属于这里 不要重复自己-抽象和重复使用 如果X将其作为方法的参数传递将会怎样Y? 单元测试在哪里? 我发现提供修饰类型评论的总是同一类型的人,而我认为给出“基于质量和逻辑”的同行评论总是相同类型的人。 什么是同行评审的正确方法(如果有)。我是否对同一个人感到沮丧,因为他们基本上都是在浏览代码以寻找拼写错误和美学缺陷而不是实际的代码缺陷? 如果我是正确的-我将如何鼓励同事在建议进行外观修饰的同时找到代码中的错误呢? 如果我不正确-请赐教。对于真正构成良好的代码审查,是否有任何经验法则?我是否错过了什么代码审查的要点? 在我看来,代码审查与代码的共同责任有关。如果不解决/检查逻辑,可读性和功能性,我会不愿意给代码竖起大拇指。如果我发现有人在文档块中省略了句号,那么我也不会为可靠的代码块而阻塞合并。 当我检查代码时,每500 Loc可能花费15-45分钟。我无法想象这些简短的评论要花超过10分钟的时间,如果那是他们正在执行的评论的深度。此外,浅薄评论者的赞许是多少?当然,这意味着所有人的拇指都不一样,并且可能需要进行两遍审核。一个拇指要进行深度评价,第二个拇指要进行“抛光”?

17
有什么好的简洁的方法可以向非程序员解释复制粘贴编程的危险?[关闭]
我正在寻找一个很好的类比或隐喻,可以向非程序员说明复制粘贴编程的问题。我偶尔会为潜在客户进行代码/系统审查,而我看到的常见问题之一是在他们的代码库中有大量的复制粘贴代码。我经常在评论中提到这一点,每次我都必须解释为什么这是一个问题(对于那些只了解编程才能理解重用是一件好事的客户而言,这尤其困难,但不足以理解为什么会这样)复制粘贴不是很好的重用形式)。显然,我可以(并且确实)通过代码维护来解释该问题,但是对于这个非程序员会遇到的问题,有一个很好的,简洁的类比会很好。如果类比说明了为什么“搜索替换”不是此问题的有效解决方案,那将是一个好处。有什么建议么? 只是为了澄清一下(基于下面的Jaroslav的回答)-我不是在这里使用代码段。我看到的(经常是令人不安的)是大量代码的复制和粘贴,或者是十行代码的代码,用于将一些用户数据(使用内联SQL查询完成)粘贴到数十个PHP或ASP.NET页面中。因此,从同一项目中其他地方重复代码。 更新:这里有几个非常好的答案。我已经在评论中解释了为什么我选择Scott Whitlock的答案,但是如果您要与完全熟悉制造的客户打交道,我也强烈建议您使用whatsisname的答案。

5
如何逐步引入代码审查?
我带领一个由六个高级工程师组成的团队。我非常相信,出于所有标准原因,进行代码审查将对我们大有裨益。不一定每次更改,但至少要有稳定的背景审查。因此人们至少会看到别人的变化并开始谈论它们。 有什么好的方法来介绍评论吗?我感到团队很不情愿,因为这是另一回事,而且谈话可能会很痛苦。我觉得复习每一个变化都是起步,至少作为第一步。我希望人们在增加数量之前先进入节奏和练习以较低的频率进行评论。 有人成功地逐步引入了代码审查吗?怎么样?我已经要求对“热门”文件或库进行审查。或随机采摘。或者我选择“选择”必须审查的更改。还是冒险尝试并进行所有更改是唯一的方法?


9
首先应该是什么:测试或代码审查?
我对编程设计模式和生命周期还很陌生,我想知道,代码检查或测试应该由哪些人来完成,首先应该做什么? 从一方面来看,如果没人检查代码是否有效,为什么还要烦恼代码呢?另一方面,如果您在测试之前进行了检查,则可以及早发现一些错误。 建议使用哪种方法,为什么?

12
如何查看您不理解的代码?
我被赋予改善公司发展的作用。我想开始的第一件事是代码审查,因为以前从未在这里进行过代码审查。 我们公司有3位程序员。我是一名网络程序员,我的已知语言主要是PHP,ActionScript和JavaScript。另外2个开发人员在VB.net中编写内部应用程序 我们已经进行了几周的代码审查。我发现很难理解VB代码。因此,当他们说出自己的所作所为时,在大多数情况下,我只需要信守诺言。 如果确实发现有问题,请解释我的意见,并说明我将如何使用我所知道的一种语言解决该问题。 有时我的建议会受到欢迎,但是很多时候我会被告知诸如“这是使用这种语言的最佳方式”或“不适用于该语言”之类的事情。 这可能是正确的,但我不知道该用哪种语言,我不确定如何确认或反驳这些主张。 我知道一种可能的解决方案是学习vb,这样我可以进行更好的代码审查。我对学习vb确实没有兴趣(特别是因为我有一系列我正在尝试为自己的项目学习的技术),并且希望保留此作为最后的选择,但这是一个选择。 我想到的另一个想法是,他们俩都对C#感兴趣,我也对C#感兴趣。它相对于他们是因为它的.net和相对于我来说是因为它与我所知道的语言更相似。但这对我们所有人来说都是新的。我想到了我们所有人在一个宠物C#.net项目上进行协作并从中互相检查代码的好处。 我想也有可能聘请顾问来给我们做一些代码审查。 在这种情况下,您会建议我做什么。

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.