将"工作有效地与传统的代码"帮助别人使用的应用程序移植维生素b6从来VB.NET?

StackOverflow https://stackoverflow.com/questions/1029483

我谨重构大的遗产应用程序最初是在写 视觉基本的6.0 随后移植。网。为了做到这一点有信心,我想要有单元的测试,围绕现有的代码这样我就可以比较之前和之后。什么是最容易和最有效的方式这样做?

还有一本书叫做"工作有效地与传统的代码"看起来就像它可能会帮助我。然而,它看起来像它只涉及面向对象的语言和视觉基本的6.0不一定OO。可以这本书还帮帮我吗?我希望有人读过它可以保证。

具体而言,这个申请使用任何类别的其他形式本身。它访问该数据库直接从形式和不一致。有几个人在这个项目上工作的所有使用自己的风格,没有标准的任何责任。

正如我所说,这个项目已经移植到VB.NET.然而,这仅仅移植在某种意义上说,它汇编了下Visual Studio2008年。所有的编码概念是Visual Basic6.0。

有帮助吗?

解决方案

它不仅仅涉及面向对象的(OO)语言。大部分内容涉及如何处理C中的遗留代码。

是的,买吧!


有一整章(第19章)称为:

  

我的项目不是面向对象的。如何进行安全更改?

还有 vbUnit xUnit 实现可以帮助您使用使用 Visual Basic 6.0 进行TDD 。

实际上,我误解了这个问题,并认为你移植到端口,而不是你已经移植过了。在这种情况下,您有大量的“遗留” VB.NET 代码完全是给你的书。您可以利用VB.NET的OO功能并使用本书的其余部分。

我真的不能推荐这本书了。

其他提示

是;这本书的概念非常强大,并且超越了OOP。 VB6 可以面向对象,虽然它不像某些语言那样完全面向对象。

本书中最强大的概念之一是“接缝”。实质上是你可以破坏你的代码,注入测试或隔离或抽象功能的地方。这只是适用于程序代码的概念之一。

你可能想要使问题更加具体。

虽然维生素b6不是一个纯粹面向对象的语言本身,有足够要素的OO这件事应该很熟悉;此外,有一定数量的单元测试的插件对于维生素b6IDE。

但是,让我们考虑的一些高级别的维生素b6组成部分:

  • 形式的对象(你可以创建新的实例)。
  • 模块表现得喜欢的类只有静态的方法。
  • 类和UserControls是接近对象,你会得到。缺少的构造使事情变得粗糙,但我们希望原来的开发人员留在初始化或写了一致Init子。
  • 事件在VB是奇;这也是可能会之旅你最大。隐藏的,有状态的代码,取决于一个特定的订货的事件毫无疑问,遍布的地方。
  • 酒店网页。好吧,它是什么就是什么

开始与VB的最佳做法。如果应用程序不是写的最佳实践的代码记在心,我认为采取这一步骤将会节省很多麻烦的道路。

你肯定会为你做一些工作,但这是在做任何.NET工作之前要考虑的策略。

将尽可能多的底层FORM代码移出到一个类中:每个表单一个类文件作为开头。本质上,表单事件处理程序除了代理调用底层类实例中的方法之外什么都不做;所有自定义方法显然都可以转移到类文件。

在阅读了Microsoft和其他人的最佳实践指南(等)以帮助您为.NET迁移做准备之后,您基本上已经准备好了您需要重新编码/重构的一点点内容:烦恼如:错误处理,事件排序,后期绑定对象/变体,集合等。

关于错误处理代码的一句话:特别很难复制spaghetti on-errors,特别是因为普通的Visual Basic编码器在将其用作控制流逻辑时有一个糟糕的诀窍。如果你在一个例程中有两个以上的子例程,那么将每个On Error块拆分成单独的子例程几乎是值得的。

一旦代码被清理干净,您也可以考虑将Visual Basic代码重构为合理的抽象(例如,单个数据适配器类和连接等),但您将是最好的判断这一点。

你可能不喜欢这种方法,所以一定要用一种形式测试水域。

我拥有一份副本,我购买的是试图控制我们的C / C ++项目。因为我错过了C#/ .NET 所提供的功能。

书籍非常适合C / C ++,但正如约翰所说,有一章没有对象。

但是,如果您说,您的代码移植到.NET,它不再是Visual Basic 6.0代码。 .NET有许多Visual Basic / C#方法可以让你挂钩代码并进行测试。但话虽如此,本书将为您提供一个很好的概述,可以让您了解应用程序的不同方式,以及控制大型旧项目的策略。

我建议看看Martin Fowler的 重构:改进现有代码的设计 ,这是一本非常好的必读书。

您可能正在寻找与 Visual Basic中的专业重构。我还没看过,但看起来很合适。

我认为你会发现表征测试最有益。它们应该是自动化的。如果没有表征测试,您将通过实际运行来手动测试您的应用程序/代码。在添加新代码时很容易错过测试关键功能。这来自我自己的经验。

Sprout Method和Sprout Class在添加新代码时非常重要。

scroll top