最近作了一個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)。甚至還須要瞭解軟件工程方面的知識。一切都是爲了提升你的工做效率。最重要的是要認清技術不斷變革的事實,有的時候須要徹底拋下本身的即成經驗,時刻保持旺盛的求知慾。