首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CJ Date:经典VB向导升级还是应该重新设计?

CJ Date:经典VB向导升级还是应该重新设计?
EN

Stack Overflow用户
提问于 2010-12-15 13:46:16
回答 4查看 144关注 0票数 0

我应该在VS08中通过升级向导运行一个经典的VB6应用程序,还是应该从头开始重新设计它。

数据库一团糟。

最初在ACCESS中设计并导入到MS SQL SERVER中。

例如,主要的实体是ROLLER_SKATES和租赁。如果你想租一双旱冰鞋,你可以。因此,这或多或少包含了轮滑鞋的库存系统。

现在你有两个不同的滑环了。Skate-B1和Skate-Z9,您还可以在滑板环表中保留来自前面提到的实体的冗余和重复数据。

这是一场噩梦。

至少表有行ID,但没有显式的外键,只有隐式的列,这些列“看起来”彼此对应。但是表的其余属性都缺省为NULL。

考虑到C.J Date在他的书SQL and the Relation中提到的类型,对属性进行检查约束不是很可取吗?

而且,数据到处都是,例如,轮滑序列号是G123,然后在另一个实例中是G-123。明白大意了吗?

我该怎么办?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-15 14:04:58

在没有花太多时间阅读你的问题的情况下,我突然想到了两行:

数据库一团糟。

这是一场噩梦

所以,我想我们都同意重写是最可取的方法。

然而,这必须与您的特定需求相平衡。迁移需要多快进行?在重写之前,当前的应用程序是否不可用?如果是这样的话,这可能是支持使用升级向导的一个非常有说服力的论点。即使考虑到它的缺陷和缺点,它也比完全从头重写要容易得多。

如果你决定走这条路并使用升级向导,第三个“平衡”选项就会出现,我强烈建议你这么做。升级项目并使用升级向导编译项目(友好的邻居堆栈溢出作为资源)后,您可以分发并开始使用应用程序的新.NET版本。然后,慢慢地,你可以开始重新设计和重新实现该应用程序now .NET版本的部分内容。只要您保持相同的公共接口,并且只重新设计应用程序的代码库的一小部分,您就可以缓慢地推出这些更改,实质上是分阶段重写整个应用程序。您可能需要几个月的时间才能获得正确的低级数据库访问代码,但在此期间,您的应用程序可以正常工作。然后,一旦你让代码正常工作并得到完善,你就可以继续将它推出到你的应用程序的下一个增量版本,同时在幕后处理UI代码。

票数 1
EN

Stack Overflow用户

发布于 2010-12-15 13:52:19

如果该应用程序是任何东西像你的原始帖子,我会推荐重做和重新设计。

您已经掌握了框架,并且知道应用程序背后的想法是什么。

当我们回顾我们设计的应用程序时,很少会发现它是完美的。只有当你多年来没有作为程序员取得进步时,才会发生这种情况。

票数 1
EN

Stack Overflow用户

发布于 2010-12-17 05:56:32

重新设计和重新分解是很棒的,但有时你必须意识到你维护的这个糟糕的小项目就是这样,而且永远不会变得更好。你必须从客户的角度考虑问题。对他们来说,这只是他们用来完成工作的设备之一。如果它是有效的,他们可能看不到任何理由在它上花费任何钱,特别是如果它是一种他们看不见或真正理解的升级。

我曾经从VB6升级过几个这样的项目。也许转换器现在更好了,但我没有太多的运气。我发现很有效的是让新的表单看起来像旧的表单。然后将旧表单中的代码复制并粘贴到新表单中,并解决错误。它走得很快。我通常也会设法做一些小的改进,主要是在UI上,客户会看到他们花的钱是物有所值的。

至于后端,我使用过一些没有外键约束的大型DB,以及您提到的所有其他问题。它的可维护性并不理想,但它工作得很好,而且听起来不像是那种需要太多维护的项目。但是,无论您做什么,您都需要确保找到一种方法来强制每个项目使用唯一的名称。我见过其他应用程序也犯过同样的错误,这导致了各种各样的问题。

如果奇迹发生,你能说服他们在这上面预算一些钱,我会从头开始。只要记住,事情总是比你想象的更大,花的时间也更长。别忘了你还得写一些数据导入器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4447071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档