您和大多数回答者将其视为两个同事之间的沟通问题,但我真的不这么认为。您所描述的听起来比其他任何事情更像是一个残破的代码审查过程。
首先,您提到您的同事是第二把手,并且期望他会审查您的代码。那是错误的。根据定义,对等代码审查不是分层的,并且肯定不仅仅在于发现缺陷。它们还可以为所有参与人员提供学习经验,社交互动的机会,并证明是建立集体代码所有权的宝贵工具。您还应该不时查看他的代码,向他学习并在他错了时纠正他(没有人每次都正确)。
此外,您提到您的同事会立即进行更改。这也是错误的,但是您当然已经知道了。如果他的工法不是问题,就不会问这个问题。但是,我认为您在错误的位置寻找解决方案。老实说,您的同事让我想起了……我,在类似情况下对我有用的是一个定义明确,可靠的审核流程和一系列出色的工具。您并不是真的想阻止您的同事检查您的代码,并要求他停下来并与您交谈,然后再做一点小小的改变。也许有一段时间,但是他很快就会变得太烦人了,而您又回到了开始的地方,或更糟的是:他将停止审查您的代码。
解决方案的关键可能是对等代码查看工具。我通常会避免产品推荐,但对于代码审查,请参考Atlassian's Crucible确实是救生员。它的作用似乎很简单,而且确实如此,但这并不意味着它并不惊人。它连接到您的存储库,使您有机会查看单个变更集,文件或文件组。您无需更改任何代码,而是对感觉不太正确的所有内容进行评论。而且,如果您绝对必须更改其他人的代码,则只需在更改集内留下注释,以解释您的更改。如果您想了解更多详细信息,请观看Crucible产品页面上的入门视频。坩埚的定价并不适合所有人,但有许多免费的同行评审工具。我曾与之合作并享受其中的一个是评审委员会,我敢肯定,通过简单的Google搜索,您会发现很多其他人。
无论选择哪种工具,它都会完全改变您的过程。无需停下来,离开椅子,打扰其他人并讨论更改;您需要做的就是每周休假一段时间并仔细阅读评论(一周一次只是一个建议。您比我更了解自己的日程安排和日常工作)。更重要的是,核心评论存储在某个地方的数据库中,您可以随时检索它们。他们不是围绕水冷却器的短暂讨论。我最喜欢的旧评论用例是在我们的代码库中引入新的团队成员时。当我可以让一个新的人走遍代码库,指出我们到底被卡在哪里,在哪里有不同的意见等等时,总是很高兴。
继续前进,您提到您并不总是发现此同事的代码可读。这让我知道您没有一套通用的编码标准,这是一件坏事。同样,您可以将其视为人员问题,也可以将其视为过程问题,并且我再次强烈建议后者。让您的团队团结起来,尽快采用通用的编码风格和标准集。您选择了开发生态系统中常见的一组标准还是提出自己的标准并没有多大关系。真正重要的是您的标准要保持一致并坚持下去。那里有很多工具可以为您提供帮助,但这是一个完全不同的讨论。只是为了让您入门,一个非常简单的事情是让预提交钩子在您的代码上运行某种样式格式化程序。您可以继续编写自己喜欢的代码,并让该工具自动地“修复”它,然后其他人才能看到它。
最后,您在评论中提到管理层不认为需要单独的开发部门。好吧,我们将它们称为“开发分支”而不是“管理分支”是有原因的。我将在这里停留,因为没有任何理由让我脑海中形成怒。
话虽如此,但请注意,我毫不怀疑您的同事在这里有过失。这不是我的意思,我的意思是您的整个开发过程也有问题,这很容易解决。用适当的工具武装自己,探索众多正式和非正式程序,然后选择适合您团队的程序。很快,您将意识到大部分“人员问题”不再存在。而且,请不要听任何提出“我们是一个小团队,我们不需要所有这些”借口的人(包括您自己)。一支有能力的开发人员团队可以在不到一周的时间内设置必要的工具,使可以自动化的一切实现自动化,并且再也无需回头。
PS。“代码所有权”是一个含糊不清的术语,经常有人争论不休,对不同的人来说意味着不同的意思。您可以找到关于C2的大多数不同(有时是相反)观点的绝妙收藏。