做了几年 VB6 迁移,结论:语法是最容易的部分。真正难的是这三件:
一、业务逻辑藏在界面里
老系统大量校验写在按钮事件里,没有文档。迁移时必须反向梳理成规则表,否则漏一条就是生产事故。
二、数据库没有约束
没有外键、没有存储过程,脏数据全靠程序兜。新系统一加约束,历史数据全报错。
三、用户的操作习惯
老系统一个键能完成的事,新系统点三次,用户就会抵触。快捷键和小键盘支持不是锦上添花,是迁移成败的关键。
所以迁移项目里,我一般把 40% 的工期留给「读懂老系统」,而不是写新代码。
做了几年 VB6 迁移,结论:语法是最容易的部分。真正难的是这三件:
一、业务逻辑藏在界面里
老系统大量校验写在按钮事件里,没有文档。迁移时必须反向梳理成规则表,否则漏一条就是生产事故。
二、数据库没有约束
没有外键、没有存储过程,脏数据全靠程序兜。新系统一加约束,历史数据全报错。
三、用户的操作习惯
老系统一个键能完成的事,新系统点三次,用户就会抵触。快捷键和小键盘支持不是锦上添花,是迁移成败的关键。
所以迁移项目里,我一般把 40% 的工期留给「读懂老系统」,而不是写新代码。
第二条深有体会。我们上次加唯一约束,直接卡住 3000 多条历史数据。
后来怎么处理的?清洗还是放行?
分批清洗 + 保留例外表,例外表挂了三个月才清零。