我最近在工作中完成的最佳变化之一是在代码审查中停止NitPicking。
nitpicking不是错误的代码,而是次优。它指出了一个可以使用更合适的单词的变量名称,可以更干净地格式化的条件,或者一些次要简化逻辑。 NITS Don' T导致了更好的代码,也没有教育开发商;他们只是在技术上,改进的微小变化(如果不是非常有意义的话)。
我希望我们的Codebase是完美的,在我看来,这些尼特是确保发生的重要组成部分。我曾经进行过度彻底的准则评论,充满了关于架构和错误的评论,但也是如此,很多人。 nits经常不堪重负其他评论;对于我提出的每个主要问题,可能有十几个人。
这种练习没有让我成为最受欢迎的同事。离得很远;我当时没有意识到它,但我的完美主义是有毒的。最好,它恼火了人;在最糟糕的是,它让他们不满,那些感情持续到远远超过代码审查本身。
几年前,一位同事提出了我们看到如果我们完全停止了Nitpicking会发生什么。最初,我推回了该提议:为什么要允许错误的代码进入码码?但最终,我们同意一个月的实验。
很多时候,在本月底,事情显然比以前更好。如此之多,所以我们几乎甚至讨论了是否继续政策;这只是一个永久性的,因为它显然是一个改进。
首先,我们看到了极大提高的信噪比。想象一下,代码审查,导致五个nits和一个关键问题。在修复那些尼特的Hullabaloo中,关键评论似乎不那么重要甚至被忽视。
没有nits,一个关键评论是唯一受到的问题。所有的注意力都得到了支付给它,是理所当然的。重要的是一个信号提升;不重要的人被忽略了什么。
其次,它改善了每个人的关系与执行它们的人的关系。我见过很多人在线谈论你如何不应该个人接受代码评论,即代码是批评而不是这个人,这是一堆废话。我一直经历了十年的代码审查,并且当有人指出我的错误或推回我的代码设计时,它仍然存在。
想象一下:你开始拉拉请求,第一个审稿人指出了十几个人。你的自然反应不会是禅宗的接受;它会变得沮丧。你想要的只是合并这个代码,但有些混蛋让你跳过愚蠢的篮球。现在假设你修复了Nitpicks并将其发送回来进行审查,只能再次被阻止,因为审稿人注意到更多的Nitpicks。 argh!
开发人员喜欢想象他们没有被冷,硬逻辑组成;但实际上,我们是具有不可避免的感情和情绪的人。
当我彻底的尼特代码时,我真的在做什么?主要效果并没有改善码比;它让人们对他们的代码感到不满,对我生气。它们的反馈不太容易接受我的反馈,它使我与同事的关系。
在停止尼特结束后几年,人们更容易接受在代码审查中反馈,并认为我的混蛋少得多。这是从之前的夜晚的差异。
最终,由于缺乏Nitpicking,我们的Codebase并没有遭受。如果有的话,它比以前更好,因为我们作为一个团队,更好地努力,专注于我们的评论中的代码设计的重要部分。
但是,如果你仍在关心你以前的谁? 我的建议是自动化你否则的内容。 为您的CI添加Lint Check和Code Style Enforcers。 使用工具,您可以提前检查问题; 另外,当自动化告诉你你不正确时,它是非洲人的,因此,结果不那么令人沮丧(就像一个单位测试失败,有人打电话给你)。 但是,真的:如果你是如何曾经(想要每一系列代码的人是完美的人),只需尝试放手。 在评论之前检查您的登录。 也许一些代码是不完善的,但您的Codebase和团队凝聚力会更好。