最近做了一个AS网站的重构,发现了很多问题。我想这也是互动广告AS开发从业人员普遍存在的问题,有些想法不吐不快。
就互动广告这个行业来说,太多所谓“经验丰富”的AS Web开发者都是从AS2时代成长起来的,所以直到今天还保留着脚本语言的习惯。把以前的思路带到AS3来做开发是极其危险的。我们来看几个典型:
1.滥用全局。
AS2的_global是多好的东西啊,怎么AS3就没了呢?初级程序员还在抱怨,中级程序员二话不说噼里啪啦写出一个Global类,老子照用。高级程序员无语。
关于代码之间的依赖关系是个很长的话题,我在这里不展开说,只想提醒大家现在的AS3业界已经发展到了DI(反转注入)。如果你还是守着静态类或者单例,就难免有点跟不上潮流。这并不是说DI就是最好的,在小网站项目里也许根本用不上。但是一定要对自己代码中用到全局的地方好好做一下反思。也许级别的进阶就是从思考代码依赖的解决方法并且重构而开始的。
2.没有释放资源。
在AS2时代,一个空白帧就可以把时间线上的资源释放掉;一个unload操作之后你所加载的swf资源也全部清空。这些是脚本语言的便捷,也是跨入AS3编程的陷阱。我看到的一些程序员是完全没有释放资源的概念的,在他们的程序里根本找不到destroy()或dispose()等类似方法。没有正确的释放资源在网站开发这种天生就是模块化的程序里是致命的错误。大部分网站仍然能够正常运行是因为网站本身规模太小,以及没有无聊的人来回切换页面几十上百次。但这并不表示这个问题就能忽视,客户是不会开着资源管理器核对内存占用的,但是身为开发者必须这么做,而且必须更专业的去做(Profiler)。通常在析构方法里面的代码可能比构造函数还要长。可笑的是我依然看到很多“制作精良”的网站背后内存占用的飙升曲线。当你想借助AIR进军移动开发的时候,问题将会更加明显。这一刻我仿佛明白了乔布斯数落Flash的原因,可是技术本身并没有错,需要提升的,也许是开发者的质量。 View full article »













