重构其他人的源代码的礼仪?

时间:2010-03-26 09:39:44

标签: c# refactoring etiquette

我们的软件开发团队由一群经验丰富的程序员组成,他们拥有各种编程风格和偏好。我们没有一切标准,只有防止完全混乱的必要条件。

最近,我碰到了一位同事做的一些重构。我的代码看起来有点像这样:

public Person CreateNewPerson(string firstName, string lastName) {
    var person = new Person() {
        FirstName = firstName,
        LastName = lastName
    };
    return person;
}

对此进行了重构:

public Person CreateNewPerson (string firstName, string lastName) {
    Person person = new Person ();
           person.FirstName = firstName;
           person.LastName = lastName;
    return person;
    }

仅仅因为我的同事需要更新我写的一个类中的其他方法,他还“重构”了上面的方法。为了记录,他是那些鄙视syntactic sugar并使用与我们其他人不同的支架位置/识别方案的开发者之一。

我的问题是:(C#)程序员用于重构其他人的源代码(语义和句法)的礼仪是什么?

12 个答案:

答案 0 :(得分:12)

我不太关心礼貌,更关心经济问题。每次代码更改都会导致大量成本:

  • 代码更改必须通过QA测试
  • 代码更改必须具有通过开发为其编写的测试套件
  • 可能需要记录影响用户体验的代码更改
  • 代码更改可能会引入错误;那些显然是巨大的成本
  • 等等。

我不会梦想对任何生产质量的代码进行轻微的“仅美学”改变,无论它是否是“我的”。这种变化带来的好处甚至无法证明成本合理。

您可能会考虑提醒您的同事,您在编码业务中不会制作出令您觉得美观的美丽代码,而是在经济疲软的情况下为您的公司创造利润。你不是艺术家,你是工程师,所以就像工程师一样;所有变更都应该由商业目的来证明。

答案 1 :(得分:10)

我相信collective code ownership,即该代码属于项目,而不属于个别工程师。因此,只要符合项目标准,我就可以重构我写的东西。如果项目没有编码标准,那么团队应该定义一些。

答案 2 :(得分:5)

礼仪应该始终在团队层面上完成。因此,请与您的同事讨论此问题,然后与整个团队讨论以确定规则。

通用规则可能不包含更改代码,如果它仅用于支持和有争议的编码样式。如果将来有人必须维持你的课程,那么他通常可以改变任何事情。

定义一些基本规则,一些反模式(总是可以由你的同事重构)等等。

此类规则不必非常严格,因此不需要定义大括号或类似事物的位置。但在这种情况下,没有人应该为代码做好准备,其他人则认为。如果您在一件事情上发生冲突,请在整个团队中讨论,为此案例创建新规则。

答案 3 :(得分:5)

如果没有编码式的指导方针/规则,他甚至可能不会意识到这种变化会引起烦恼。

那就是说,风格相当不规范,在个人层面上,我会对“重构”感到恼火,这种“重构”并没有改变代码的含义,而是仅用于在他的脸上标记他的编码风格。我不确定它是否有资格作为重构。很自私。

答案 4 :(得分:3)

恕我直言,这并没有使代码更清洁,只是强加了其他人的编码风格。您应该与您的同事讨论这种“重构”是否真的有必要(以及您的同事是否真的没有更好的方式来度过他/她的时间: - )

答案 5 :(得分:3)

最重要的方面是一致性。您的团队应决定是否使用类型推断和对象初始化器,并写下一些编码指南。

答案 6 :(得分:2)

我认为最重要的是能够不同意和承诺。我们都有自己的偏好,但来回改变不重要的东西会浪费每个人的时间。

答案 7 :(得分:1)

无情地坚持标准。如果没有标准那么这就是你的问题,而不是其他人可以而且确实改变你的代码。

此外,在对代码更改感到不满之前,您需要确定意图。这是恶意还是无辜的改变?

答案 8 :(得分:1)

如果我正在修改同事拥有的文件,我会尽量保持更改与其风格一致。这样,即使我们的一半文件前缀为字段的“m_”和半字母前缀“_”(以及其他小的东西),至少单个文件/类是自洽的。

答案 9 :(得分:0)

他是否为该项目生成了大部分代码?如果是这样的话,我可以理解他的所作所为。当进入一个已经正在进行的项目时,我尝试匹配整个代码中已经使用的格式。

当然,这可能不适用于您的情况。如果任何项目获得了大家平等的贡献,也许可以采取Mnementh的建议并将问题置于首位。

答案 10 :(得分:0)

我只想与您的开发人员讨论您想要重构的内容以及原因。只有在你同意的情况下才重构代码。

这将导致讨论,很可能你们俩都会互相学习。

答案 11 :(得分:0)

我认为在这个具体的例子中(C#),您应该遵循Microsoft提供的指导原则。与.NET Framework代码标准的一致性使得易于阅读的类和代码结构成为可能。

另一件事是Visual Studio在您键入时自动更正各种格式规则,这将有所帮助。例如,关闭括号或结束语句时。

我个人认为化妆品重构看起来很丑,降低了可读性,而你的代码遵循.NET惯例。