问题标签 [legacy-code]
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.
asp.net - 为遗留系统编写替换 asp/html 表单
快速提问。
有一个旧网站(不受我控制且无法修改),它为用户提供填写数据的表格,然后用户“提交”表格进行处理。这个表单几乎没有错误检查,对用户的帮助也很少(即它在大约 12 年前设计得非常糟糕,此后一直没有更新)。
尽管如此,该应用程序的后端执行一项关键功能。
我的问题是,是否有可能(没有任何修改旧网站的能力)在位于不同服务器和域上的 asp.net 中编写我自己的新前端(具有适当的预提交验证),然后模拟只要我复制正在发送的表单/数据,“提交”到另一个网络服务器?
我猜这里的关键问题是,是否可以在一个网站上向另一个网站提交表单,这可以通过对旧网站的任何更改来完成吗?
评论赞赏。
assembly - 你还有什么古老的旧学校代码?
最近几天因为生病而感到无聊,我决定尝试挖掘一些旧代码。我可以找到一些我写的古代 Atari ST 东西的二进制版本,但我找不到任何来源。我确实设法从传奇的旧 x2ftp 站点的存档中挖掘出我在许多个月前用 ASM 编写的旧 ModeX 库:
http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos
过去的爆炸:-)
还有其他人想让自己看起来很老并发布一些旧学校代码吗?:-) 很遗憾,我的 68000 ASM 东西仍然没有,尽管我现在可能都认不出来了!
啊..回忆:-)
ruby-on-rails - Ruby 1.9 的主要语法变化是什么?
另外,我想知道升级到 Ruby 1.9 会对 1.86 版的遗留代码产生什么影响。新版本是否向后兼容?
unit-testing - 使用单元测试进行实际重构
刚刚阅读了《重构:改进现有代码的设计》的前四章,我开始了我的第一次重构,但几乎立刻就遇到了障碍。它源于这样的要求,即在开始重构之前,您应该围绕遗留代码进行单元测试。这使您可以确保您的重构没有改变原始代码所做的事情(只是它是如何做的)。
所以我的第一个问题是:如何在遗留代码中对方法进行单元测试?如何围绕不只执行一项任务的 500 行(如果我幸运的话)方法进行单元测试?在我看来,我必须重构我的遗留代码才能使其可单元测试。
有没有人有使用单元测试重构的经验?如果是这样,你有什么实际的例子可以和我分享吗?
我的第二个问题有点难以解释。这是一个示例:我想重构一个从数据库记录中填充对象的遗留方法。难道我不需要编写一个单元测试来比较使用旧方法检索到的对象和使用重构方法检索到的对象吗?否则,我怎么知道我的重构方法会产生与旧方法相同的结果?如果这是真的,那么我要在源代码中保留旧的弃用方法多长时间?在我测试了几条不同的记录之后,我会直接敲它吗?或者,如果我在重构的代码中遇到错误,我是否需要保留一段时间?
最后,由于有几个人问过......遗留代码最初是用 VB6 编写的,然后移植到 VB.NET 中,架构更改最少。
oracle - 以错误的方式插入 Oracle - 如何处理?
我刚刚找到以下代码:
我可以为 PK 创建一个序列,但有一堆现有代码(经典 asp、不属于该项目的现有 asp.net 应用程序)不会使用它。
我应该忽略它,还是有办法在不进入现有代码的情况下修复它?
我认为最好的选择就是这样做:
选项?
synchronization - 经典企业应用程序中的“同步”关键字是否可疑?
我说的是经典的企业应用程序。通常托管在某种应用程序服务器或容器中。没什么花哨的,只是实体、服务、演示/UI 和关系存储。
每当我synchronized
在这样的应用程序中看到关键字(在方法或块上)时,我都会非常怀疑。在我看来,这要么是不了解基本架构概念的标志(例如,域模型未在多个客户端之间共享),要么是更糟糕的标志,表明架构实际上非常拙劣。
你在这里分享我的想法吗?还是我完全偏离了轨道?您是否有在经典企业应用程序中实际需要同步的用例?
visual-studio - Multi-language build tools
I have a build process for a large enterprise system comprising several dozen separate EXEs and DLLs. These use multiple languages, C, C++, Fortran, Python, Awk and a couple more. The build scripts are 4DOS batch processes which evolved over 4 decades. They are large and unwieldy and need constant care and feeding.
I must keep the Visual Studio solution and project files as the basic compile/link entities. What's the best tool for wrapping these disparate languages all together. 4DOS is very old and cumbersome.
EDIT:
Thanks gang. I think I'll try SCONS first because it's Python. We have plenty of people well versed in Python to be able to update and maintain it. I'm 61 now and it's not going to be me supporting this in the long term. I don't like anything requiring JAVA or XML because those are not languages already in our product mix and we have enough in play.
Those blog posts were good. He concluded that SCONS was best but simply too slow for his purposes. I'm not looking for speed in nightly builds. It's got until 7 AM. I want readability and maintainability.
php - 如何将 ORM 添加到 PHP 遗留项目?
我们正在开发一个 PHP 项目,该项目已经开发了 2 年多,现在团队已准备好并愿意将开发切换到 ORM。因为它确实加快了开发速度,让您可以通过 Objects 来操作,而不是大多数时候考虑 SQL 代码和数据库表。
我们决定选择Doctrine ORM,因为它加载了 YAML 数据夹具——我们非常需要它来进行单元测试。
我主要担心的是,使用新的 ORM 框架会降低网站的性能。我们无法在当前数据库抽象层(使用pg_connect
语法,不兼容PDO )之间建立共享连接。数据库连接机制不能切换到PDO-compatible,因为有很多SQL代码不兼容PDO_SQLITE语法。
因此,据我了解,如果我们开始使用它,它将使数据库连接数增加一倍。我不确定数据库服务器是否能够处理这个问题。
在这种情况下,您会建议我们做什么?
c# - C#。为遗留代码添加多态性
假设我们有不能修改的遗留类:
我想用这样的签名写一个助手:
请注意,第一个参数的类型是“对象”。测试代码应该是这样的:
问题是,除了这些之外,您还可以想象什么实现:
谢谢!
refactoring - 遗留代码噩梦
我继承了一个项目,其中类图非常类似于意大利面上的蜘蛛网。在过去的两个月里,我编写了大约 300 个单元测试来给自己一个涵盖主要可执行文件的安全网。
在任何特定时刻,我的敏捷开发书籍库都触手可及:
- 有效地使用遗留代码
- 重构
- 代码完成
- C# 中的敏捷原则模式和实践
- 等等
问题是我触摸的所有东西似乎都破坏了其他东西。UI 类混合了业务逻辑和数据库代码。许多类之间存在相互依赖关系。每次我更改任何其他课程时,都会有几个上帝课程中断。还有一个突变的单例/实用程序类,其中包含大约一半的实例方法和一半的静态方法(尽管具有讽刺意味的是,静态方法依赖于实例而实例方法不依赖)。
我的前辈甚至认为向后使用所有数据集会很聪明。每个数据库更新都作为存储过程中的参数直接发送到数据库服务器,然后手动刷新数据集,以便 UI 显示最近的更改。
我有时会认为他们使用了某种形式的弱混淆来保证工作安全,或者作为交出代码之前的最后告别。
有没有什么好的资源来解决这个烂摊子?我的书很有帮助,但似乎只涵盖了我遇到的一半情况。