我们的软件开发团队由一群经验丰富的程序员组成,他们拥有各种编程风格和偏好。我们没有一切标准,只有防止完全混乱的必要条件。
最近,我碰到了一位同事做的一些重构。我的代码看起来有点像这样:
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#)程序员用于重构其他人的源代码(语义和句法)的礼仪是什么?
答案 0 :(得分:12)
我不太关心礼貌,更关心经济问题。每次代码更改都会导致大量成本:
我不会梦想对任何生产质量的代码进行轻微的“仅美学”改变,无论它是否是“我的”。这种变化带来的好处甚至无法证明成本合理。
您可能会考虑提醒您的同事,您在编码业务中不会制作出令您觉得美观的美丽代码,而是在经济疲软的情况下为您的公司创造利润。你不是艺术家,你是工程师,所以就像工程师一样;所有变更都应该由商业目的来证明。
答案 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惯例。