给AS程序员的一点建议

         最近做了一个AS网站的重构,发现了很多问题。我想这也是互动广告AS开发从业人员普遍存在的问题,有些想法不吐不快。

         就互动广告这个行业来说,太多所谓“经验丰富”的AS Web开发者都是从AS2时代成长起来的,所以直到今天还保留着脚本语言的习惯。把以前的思路带到AS3来做开发是极其危险的。我们来看几个典型:

1.滥用全局。

         AS2的_global是多好的东西啊,怎么AS3就没了呢?初级程序员还在抱怨,中级程序员二话不说噼里啪啦写出一个Global类,老子照用。高级程序员无语。

        关于代码之间的依赖关系是个很长的话题,我在这里不展开说,只想提醒大家现在的AS3业界已经发展到了DI(反转注入)。如果你还是守着静态类或者单例,就难免有点跟不上潮流。这并不是说DI就是最好的,在小网站项目里也许根本用不上。但是一定要对自己代码中用到全局的地方好好做一下反思。也许级别的进阶就是从思考代码依赖的解决方法并且重构而开始的。

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)。甚至还需要了解软件工程方面的知识。一切都是为了提高你的工作效率。最重要的是要认清技术不断变革的事实,有的时候需要完全抛下自己的即成经验,时刻保持旺盛的求知欲。

你可能感兴趣的:(职场,建议,休闲)