使用版本控制很好地重构

Posted

技术标签:

【中文标题】使用版本控制很好地重构【英文标题】:Refactoring Nicely with Version Control 【发布时间】:2010-09-14 21:32:46 【问题描述】:

我的一位同事让我检查我的一些代码,他给我发了一个差异文件。一般来说,我对差异或版本控制并不陌生,但由于他所做的更改,差异文件很难阅读。具体来说,他使用了“提取方法”功能,并对一些方法进行了重新排序。从概念上讲,很容易理解,但看差异,很难说出他做了什么。对我来说,检查以前的版本并使用 Eclipse 的“比较”功能要容易得多,但它仍然很笨重。

是否有任何版本控制系统存储与重构相关的元数据。当然,这将是特定于 IDE 和编程语言的,但我们都使用 Eclipse 和 Java!也许有一些标准可以让 IDE 和版本控制实现很好地发挥作用?

【问题讨论】:

【参考方案1】:

Eclipse 可以export refactoring history(也可以查看3.2 release notes)。然后,您可以在 Eclipse 中通过预览查看重构更改。

【讨论】:

我喜欢这个想法,只要他们有版本供其他人看到并且在 cmets 中有一些参考!【参考方案2】:

我不知道在重新排列文件时有哪些比较工具可以做得很好。一般来说,由于这类问题,这是一个坏主意。人们经常这样做只是为了满足自己的风格,这是更改代码的一个糟糕的、糟糕的理由。它可以有效地破坏历史记录,就像重新格式化整个文件一样,除非必要,否则永远不要这样做(即它已经是一团糟且不可读)。

另一个问题是工作代码可能会因为某人的风格偏好而被破坏。如果它没有坏,就不要修理它!

【讨论】:

重构通常是个坏主意?有趣的! (魔鬼鼓吹,但你确实把它和“文件已经整理好了)混为一谈了。”【参考方案3】:

不久前我问了similar question,但从未得到满意的答案。我会关注你的问题,看看人们想出了什么。

对于您的特定情况,最好使用 diff 作为指南来查看文件的最新版本。这也是我在我的情况下一直在做的事情。

【讨论】:

【参考方案4】:

重构历史功能对我来说是新的,但我喜欢它听起来的方式。对于较少特定于工具的方法,我喜欢发送补丁文件。审核人员只需应用补丁并审核结果,然后他们可以在完成后恢复到版本控制中的版本。

【讨论】:

以上是关于使用版本控制很好地重构的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 9 + Maven + 版本控制的最佳实践

我如何在 git 的其他路径上备份/版本控制我的文件(具有 IDE 设置)?

用产品思维设计API——版本控制,没有你想的这么简单

REST api 版本控制在技术上是如何实现的? [关闭]

第二次作业

用产品思维设计API——版本控制,没有你想的这么简单