乱世中的类,是用 vcx 与 prg ?
首先声明一点,我无意评价是用 vcx 好还是用 prg 好,我只是描述它们之间的差别,不考虑如何抉择。vcx 由来以及,自我开始使用 vfp3 时它就存在了,当时用得不多因为 vfp3 没有容器。大范围使用 vcx 则是 vfp6,vfp6 有了容器并且有了更多的类。prg 则应该更加久远,直至 vfp9 有很多不可视类仍然需要用 prg 来完成,这里也不考虑不可视类这种无它的方式。
我以前曾经见过一些前辈,用大量大量的 prg 来定义类,甚至先用 vcx 设计类然后再转成 prg。我一直不明白为什么费尽心机维护两个版本,偶尔小更新图方便直接改 prg 忘了改 vcx,大更新又去调整 vcx 再转成 prg。我也曾经咨询过也跟同行讨论们这个问题,但从来没有人说得出一个令我信服的理由,这些理由比起维护两个版本来说以及 vcx 带来的便利来说根本不值一提,如果 prg 真的这么好,又何必设计时用 vcx 再特意转成 prg 呢。
后来我明白了,那是 Win2000 问世以后,vfp6 还是 vfp5 的程序在 Win2000 上频繁出现 C5 闪退,有大神分析了一通 vfp 原理,总结说是 Unicode 问题,解决方法12345其中有一个就是把 vcx 转成 prg。我信吗?我只是严格自律所有变量一律 Local 声明,我出现 C5 的情况通常都是在使用第三方的情况下出现(含 Win32api),这种情况下只能是认真看第三方说明了根本没有任何办法解决。
现在己经是 3202 年了,vfp6 也早就退出历史舞台了,可这种把 vcx 转成 prg 习惯却被很多人保留了下来,甚至把“为什么”视为绝密的存在。
prg 连个语法检查都没有,用它来写一个稍微复杂一点的类都痛苦得要死。vcx 可以多窗口可以打开多个方法,Ctrl+E 保存后下次打开 IDE 仍然停留在你上次编辑时的状态。prg 唯一的优点就是写个小型的示例 ,在各种论坛上直接发代码不用上传文件。
举个小例子,下图就是 vcx 与 prg 的差别,vcx 有属性、方法说明 prg 没有,prg 是由 vcx 直接生成的一字未动,我甚至尝试在 prg 中加 helpString "方法说明" 都毫无作用,但方法提示对我这位也己被岁月摧残成“前辈”的老人来说却是相当管用的。
就说到这吧,似乎没说什么,或者 vfp 并不完美,vcx 也不完美,prg 也不完美。
[此贴子已经被作者于2023-3-26 10:12编辑过]