最近作了一个AS网站的重构,发现了不少问题。我想这也是互动广告AS开发从业人员广泛存在的问题,有些想法不吐不快。程序员
就互动广告这个行业来讲,太多所谓“经验丰富”的AS Web开发者都是从AS2时代成长起来的,因此直到今天还保留着脚本语言的习惯。把之前的思路带到AS3来作开发是极其危险的。咱们来看几个典型:编程
1.滥用全局。设计模式
AS2的_global是多好的东西啊,怎么AS3就没了呢?初级程序员还在抱怨,中级程序员二话不说噼里啪啦写出一个Global类,老子照用。高级程序员无语。框架
关于代码之间的依赖关系是个很长的话题,我在这里不展开说,只想提醒你们如今的AS3业界已经发展到了DI(反转注入)。若是你仍是守着静态类或者单例,就不免有点跟不上潮流。这并非说DI就是最好的,在小网站项目里也许根本用不上。可是必定要对本身代码中用到全局的地方好好作一下反思。也许级别的进阶就是从思考代码依赖的解决方法而且重构而开始的。ide
2.没有释放资源。模块化
在AS2时代,一个空白帧就能够把时间线上的资源释放掉;一个unload操做以后你所加载的swf资源也所有清空。这些是脚本语言的便捷,也是跨入AS3编程的陷阱。我看到的一些程序员是彻底没有释放资源的概念的,在他们的程序里根本找不到destroy()或dispose()等相似方法。没有正确的释放资源在网站开发这种天生就是模块化的程序里是致命的错误。大部分网站仍然可以正常运行是由于网站自己规模过小,以及没有无聊的人来回切换页面几十上百次。但这并不表示这个问题就能忽视,客户是不会开着资源管理器核对内存占用的,可是身为开发者必须这么作,并且必须更专业的去作(Profiler)。一般在析构方法里面的代码可能比构造函数还要长。好笑的是我依然看到不少“制做精良”的网站背后内存占用的飙升曲线。当你想借助AIR进军移动开发的时候,问题将会更加明显。这一刻我仿佛明白了乔布斯数落Flash的缘由,但是技术自己并无错,须要提高的,也许是开发者的质量。函数
3.滥用资源。工具
这点是我最近学习iOS编程之后反思的。在移动设备这种内存有限的平台上开发,每1k内存开销都很重要、谁持有内存的引用也很重要。之前在Flash里作开发,像滚动列表这种东西,有多少项就生成多少个实例出来,排列一下,弄个遮罩,让它滚起来就行。彻底没有延迟实例化(内存优化)和对象回收(CPU优化)的概念。这样的程序写出来在移动设备上根本连运行的机会都没有就要跳出了。想要成为高级的开发者就必定要对你的程序中每个对象的生命周期都了如指掌,而且可以自如把控,让内存和CPU(之后还有GPU)都运行在最佳状态。学习
把这些基础却至关重要的障碍扫清之后,咱们才真正有资格来看所谓的“框架”。优化
大多“经验丰富”或多或少都有积累本身的代码库。可是我发现的现象是除了上面提到过的代码质量不高之外,这些开发者还对其余人的开源框架或者类库抱有不屑的态度。也许是程序员相轻的心理因素在做怪,可是毫不应当就此蒙蔽了本身的眼睛。要相信他山之石能够攻玉,特别是那些可以在业界获得流行和推广的框架必定有本身独到的地方。
我在向一些人介绍和推荐Gaia框架的时候,发现受众不少都是从自身的角度或者编程习惯出发,很快的就提出各类方面的质疑。好比说加载怎么没有报错,site.xml结构为何那么冗长不够精简等等。也许很快在暗地里上就给这个东西贴上很差用的标签,转头仍是用回本身的一套。其实以我使用Gaia两年的经验能够证实,这套框架的确很是适合作Agency网站项目的开发。我用它作过大到AMG中国官方网站改版,小到Siemens Navi这种只有两三个页面的网站。若是你深刻学习过它的API(真的不难),就会发现它可以涵盖绝大部分的开发需求。并且你还能够反过来复习一遍一个成熟的框架是怎么运用设计模式、怎么解决代码依赖的,检查它是否在资源使用方面作到了最好。
最后,想成为一个合格的AS开发者还须要很是熟悉你的编码环境(推荐FDT),了解自动化工具(Ant、JSFL等),掌握版本管理知识(Git)。甚至还须要了解软件工程方面的知识。一切都是为了提升你的工做效率。最重要的是要认清技术不断变革的事实,有的时候须要彻底抛下本身的即成经验,时刻保持旺盛的求知欲。