【问题标题】:Code duplication in .NET.NET 中的代码重复
【发布时间】:2015-07-03 09:31:50
【问题描述】:

假设您有一个 Windows 窗体,允许您在文本框中输入您的姓名,您按下一个按钮并弹出一个带有您姓名的消息框。现在,让我们假设用户挺身而出并希望另一个文本框打印他们的姓氏。您确定此功能将需要几个月的时间来开发(我故意夸大其词,但请接受这个概念)。

因此,您不想修改现有表单,否则在新功能完成之前您无法发布您的产品。我对这种情况的处理方法是复制和粘贴表单,实施更改,测试它们,并在准备好时将旧表单替换为最新版本。

这种方法的主要缺点是对旧形式的任何快速修复都需要在新形式中复制,从而导致重复工作。除了我讨厌复制和粘贴之外;这感觉不对。

另一种方法是创建一个继承原始表单的类,因此对“旧”表单的任何错误修复都会自动用于新表单。这种方法使您可以灵活地以这种“新”形式进行开发,同时允许您对旧的问题进行错误修复。

但是,我不相信这是正确的方法。对于这种情况,您有其他更好的方法吗?

【问题讨论】:

  • 听说过源代码控制、版本、集成等吗?

标签: .net winforms code-duplication


【解决方案1】:

听起来你想要的是一个版本管理子系统。查看 Git、SVN 或其他。这些允许您同时处理程序的多个“版本”、进行更改、合并这些更改等。

正如 cmets 中所述,Git 上描述 possible workflows 使用分支的文档可能会帮助您入门。 对于 Tortoise/Mercurial,this SO question 可能会回答您的问题。

【讨论】:

  • 不不,我使用 mercurial 版本控制。没什么大不了。我需要一种方法,允许您修改原始表单(用于错误修复),同时允许您处理相同表单的新功能,而无需代码重复和串联。我敢肯定,你们在从事这项业务时都有过这种情况:)))
  • @CodeCaster 所说的:如果您已经在使用版本控制,那么您就没有充分发挥它的潜力;实际上,您并没有将它用于其主要目标。查看分支;它是处理您提议的案例的工具。
  • 听起来很有趣的概念。我想知道 Tortoise/Mercurial 是否有“特征分支”。它确实有分支,但它会自动为您处理/处理所有事情。我从未在 Tortoise 中看到“创建功能分支”选项,但我已经看到了这些分支,然后它们合并了来自不同开发人员的代码。您的建议可以很好地替代我们现有的“草率”方法!
  • @deadCrow "branch by feature" 是一种原则,一种使用分支的方式。您不会在源代码管理客户端中找到“功能分支”选项。
猜你喜欢
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 2016-05-03
  • 2019-01-15
  • 1970-01-01
  • 2017-02-15
相关资源
最近更新 更多