AS3并不比AS2更好
我不太明白这种AS2抨击的事情...我只知道很少有人真正理解AS2的巨大可能性...AS2可以与Ruby相比,而AS3只是Java十年前的水平...是的,它很慢,但比AS3更强大和表达力强...除了适当的错误处理之外,我不知道AS3有什么基本功能AS2没有(不要混淆语言和API)...在一个相关的话题上,我最近深入研究了一些细节...AS3可以访问更大的API,但大多数重要的东西都不是你在业务应用程序中需要的。
如果你充分利用AS2,它可以非常高效和优雅...如果你想在AS3中获得与AS2相同的灵活性(或者至少是最好的近似),你会发现大部分代码执行速度都会变慢...
不要使用AS3
我很认真...如果你想针对AVM2,使用尽可能少的AS3,要么通过MXML使用Flex,要么使用Haxe...如果快速开发很重要,就使用Flex,如果更注重性能(当然还有其他原因),就使用Haxe...
直到今天,AS3一直是个死胡同...自从它推出以来,语言没有改变过一点...当然,FlashPlayer有新功能,但AS3自从3年前发布以来就一直是AS3,除了Vector,这只是一些相当虚假的东西...你可能想注意到,从AS1到AS2花了3年时间,从AS2到AS3又花了3年时间...现在真的是时候推出AS4了,但Adobe似乎没有在研究任何类似的东西...相反,他们专注于不断扩大他们的产品组合...
你应该怎么做?
从字面上看,我有这样的印象,你有大约100000行的意大利面条代码...所以实际问题是代码,而不是语言...你需要重写...如果你认为有意义,甚至可以用AS2重写(尽管我仍然建议使用Haxe)...实际上使用AS2的唯一好处是,如果你幸运的话,你可以复制和粘贴一些实现...但你真的应该从头开始构建一个干净的应用程序,使用你所使用的语言提供的最佳功能,作为OOP、AOP和FP的子集(Haxe/AVM1将允许所有这些东西),或者采用MXML允许的声明性方法...
除了明显的成本问题外,没有任何重写的缺点...优点是你会得到一个更好的代码库,更易于维护、灵活,可能甚至表现更好,或者至少使分析和后期优化更容易...
当涉及到客户时...
... 我建议您告诉他们简单的事实:他们可以拥有一个提供最低价格的固定功能集合的软件(这可能是在您的情况下他们现在拥有的),或者他们可以拥有灵活/可扩展/设计良好的软件 ... 即使他们选择后者,他们也必须接受,每隔一段时间需要采取像重写这样的激烈措施 ... 代码的持续退化是不可否认的现象 ... 当您设计软件时,您开始做出决策,在哪些方向上它可以发展,在哪些方向上它不能,您将达到一个点,在该点上,用于实现软件未设计的功能而添加的肮脏黑客技巧的晦涩网络将使进一步扩展变得不经济... 当您要扩展软件(无论是您自己的还是不是),不要犹豫指出这一点,说明进行重写是一个非常好的选择,而不是让他们支付所有需要添加所需额外功能的低效工作的费用…软件扩展的成本呈指数增长... 重写之后,这个成本回到了“接近0的浅部分”... 判断何时进行重写取决于您的专业知识(如果需要查看100K行代码才能实际进行这种评估,那么在我看来,现在是进行重写的好时机)... 先了解软件应该走向何方,需要什么,然后选择最有效的方式来做到这一点...