问题标签 [legacy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
legacy - 您将如何维护遗留应用程序
您将如何维护以下遗留应用程序:
没有单元测试有大方法
有很多重复的逻辑
- 没有关注点分离
- 有很多快速破解和硬编码字符串
- 有过时和错误的文件
- 要求没有正确记录!这实际上导致了过去测试人员、开发人员和客户之间的纠纷。当然还有一些非功能性的需求,比如不应该慢,不冲突以及其他应用程序用户知道的业务逻辑。但除了最常识性的场景和最常识性的业务工作流程之外,几乎没有关于应该(或不)做什么的指导。
???
html - 我该如何更新此代码
我必须将此旧标记插入到我正在构建的新站点中。问题是它使用<embed>
标签。
<embed>
对于那些没有闪存的人,我是否会取消并放入一些内容作为替代方案?基本上我只是想把这段 html 带入 21 世纪。
.net - 应用程序数据同步 - 与旧应用程序一起运行新应用程序
我们正在更换旧系统。这两个应用程序将在一段时间内同时运行。用户将能够使用任一系统,挑战在于能够保持他们的数据库彼此同步。
新系统是 ASP.NET,旧系统是 VB6。两者都在 SQL Server 数据库上运行。目前还不清楚数据库是否会在同一个服务器机房,更不用说同一个国家了。
到目前为止,桌面上的两个解决方案是:
- 位于每台机器上并由其他应用程序调用的 Web 服务。
- 需要修改本机对象的基类上的 Save 方法。这是侵入性的,并且在关闭它时可能是一个问题。
一个单一的 Windows 服务,它轮询每个数据库并计算出发生了什么变化并在适当的时候转发适应的更新。
- 需要更改两个应用程序中的模式以确保它们在所有表上都有 LastModified (DateTime),以便我们可以在任何给定的时间间隔执行定期 SELECT。
这两种解决方案似乎都是合理的。两种解决方案各有利弊。企业要求在更新一个系统和在另一个系统中看到它之间延迟不超过 2 秒(!)。这可能是一个延伸目标,但它是一个目标。
其他被建议但被拒绝的(我愿意重新考虑)是:
- 数据库触发器 (blugrh)
- BizTalk 或其他总线(看起来像一把大锤,对于切换解决方案来说太复杂了)
- 修改所有存储过程 (noooo.)
- SSIS(对此还不够了解)
欣赏你可能有的任何想法。
编辑:注意架构完全不同。
.net - 大型应用程序的数据访问策略是什么
我即将着手重写 .NET 3.5sp1 中的 VB6 应用程序。VB6 应用程序编写得非常好,数据层完全基于存储过程。我想使用像 Linq2SQL/Entity Framework/NHibernate/SubSonic 这样的自动化工具。诚然,除了一次性项目,我没有在任何其他项目中使用过这些工具。
我担心所有这些选择可能遇到的潜在问题是速度。例如,现在要检索单行(或整个列表),我使用以下存储过程:
要在 Linq2SQL/Entity Framework/NHibernate/SubSonic 中检索单行,这些解决方案是否必须将整个列表带到客户端并找到我需要的行?
那么,对于大数据域的应用,数据访问策略的共识是什么呢?
.net - .NET Framework 可以在 Win98 上使用吗?
我需要为客户编写一个在 Windows 98 上运行的小工具。由于这是一个非常小的项目,我希望我可以避免使用原生 C++ 并使用 C#。
.net Framework 2.0 下载声称支持 Windows 98。在安装或编码时是否需要注意任何警告或问题?
refactoring - 大规模重构策略
我目前正在编写一段代码,其中逻辑和数据访问都存在于 GUI 类中。显然,我想改善这种情况。
目前的结构基本上是:
- 大泥球
最终目标是实现类似 DDD 的结构:
- 达尔
- 领域模型
- 服务层
- 演示模型
- 图形用户界面
那么,你将如何解决这个问题呢?
- 大爆炸
- 定义最终状态的结构并将代码推送到其最终位置。
- 分而治之
- 试着把大泥球分成两块。重复直到完成...
- 扼杀
.net - 单元测试旧版 ASP.NET Webforms 应用程序
我继承了一个没有单元测试的遗留 Web 应用程序。我想添加一些,但不知道从哪里开始。我应该将它们添加到旧代码中吗?或者只是新的代码?如果该代码与遗留代码交互怎么办?你有什么建议?
c++ - 您可以在 C++ 中将指针声明为 extern 吗?
我有以下无法编译的遗留 C++ 代码:
GCC(g++)抱怨:“'*'令牌之前的预期初始化程序”
环顾四周,将这些声明为外部引用似乎更常见,如下所示:
为什么指针无效,但引用在这种情况下?
解决方案:
如下所述,真正的问题是缺少 std:: 命名空间说明符。显然,这在较旧的 C++ 代码中很常见。
performance - 如何处理长时间运行的单元测试?
我有大约 100 个单元测试,覆盖率为 %20,我正在尝试增加覆盖率,这也是一个正在开发的项目,所以请不断添加新的测试。
目前在每次构建后运行我的测试是不可行的,它们大约需要 2 分钟。
测试包括:
- 从测试文件夹中读取的文件(模拟一些 HTTP 内容的数据驱动风格)
- 向本地网络服务器发出实际的 HTTP 请求(模拟起来非常痛苦,所以我不会)
- 并非所有这些都是单元测试,但也有相当复杂的多线程类需要测试,我确实测试了测试的整体行为。这可以被视为功能测试,但也需要每次都运行。
大多数功能需要读取 HTTP、执行 TCP 等。我无法更改它们,因为如果我更改这些测试,这就是项目的全部想法,那么测试东西将毫无意义。
此外,我认为我没有最快的工具来运行单元测试。我当前的设置使用带有 Gallio 和 nUnit 作为框架的 VS TS。我认为 VS TS + Gallio 也比其他人慢一些。
你会推荐我什么来解决这个问题?我想在 btu 的每一点变化之后运行单元测试,目前这个问题正在打断我的流程。
进一步澄清编辑:
代码高度耦合!不幸的是,改变就像一个巨大的重构过程。而且有一个鸡蛋综合症,我需要单元测试来重构这么大的代码,但是如果我不重构它,我就不能有更多的单元测试:)
高度耦合的代码不允许我将测试分成更小的块。另外我不测试私人的东西,这是个人的选择,这让我发展得更快,仍然获得了大量的好处。
而且我可以确认所有单元测试(具有适当的隔离)实际上都非常快,而且我对它们没有性能问题。
进一步澄清:
代码高度耦合!不幸的是,改变就像一个巨大的重构过程。而且有一个鸡蛋综合症,我需要单元测试来重构这么大的代码,但是如果我不重构它,我就不能有更多的单元测试:)
高度耦合的代码不允许我将测试分成更小的块。另外我不测试私人的东西,这是个人的选择,这让我发展得更快,仍然获得了大量的好处。
而且我可以确认所有单元测试(具有适当的隔离)实际上都非常快,而且我对它们没有性能问题。
legacy - 你有没有研究过每次都会让你死掉一点的“老派代码”?
每次我将这个遗留代码转换为 Web 应用程序时,我都觉得自己内心有点死。数据库很垃圾。所有的字段和列都是 nvarchar 和空白(空字符串)假设表示无(Null)而不是使用 Null 表示无。对于百分比之类的东西,而不是使用小数。您标记额外的两个零并将其存储为字符串(nvarchar)。当我深入数据库,处理代码并发现旧的遗留应用程序如何工作时。我死了一点。