Adobe Flex編碼約定文件引發了爭論

elevenxl發表於2008-05-18

2008年4月18日,Adobe發表了其Flex SDK編碼約定及最佳實踐。Adobe的Flex團隊這樣解釋這個新約定:“……這個編碼標準是為那些使用ActionScript 3(AS3)編寫開源Flex框架元件的開發者設定的。堅持這些標準可以使原始碼看起來更一致、組織更良好、更專業”。

然而,這一約定在Flex RIA社群的開發者中引發了爭論。例如,Keith Petters就 不喜歡看到在編碼約定文件中所表述的“flex定式(fixation)”。他評論道,“讓我厭煩的一件事情是,這是一個條款化的Flex文件。實際上那 裡並沒有任何Flex特定的內容,全是AS3編碼約定。我希望Adobe放棄其Flex定式並承認現存的AS3就是一門很好的語言。” Igor Costa這樣回應:“你這麼說是沒錯,Keith;但是,這篇文件也只是針對Flex 4 SDK的編碼指南,針對那些放置在SDK上的ActionScript類而已,根本不是針對整個語言的。”

或許,最激烈的爭論是關於程式碼應以何種格式出現的細節意見。正如TL on PL的Tom Lee 所說,“我認為,提供某種建議背後的基本原理是有作用的,而不是僅僅去說‘這樣做,不要那樣做’”。例如,Lee特別反感這樣的建議“使用Array字面值(literals)而不要用new Array()”。他評論道

難道“new Array()”不是與其它型別物件的例項化方式更一致嗎?“[]”是一種簡寫語法。我認為一般情況下都要避免簡寫,因為這需要對一門語言更加精通,不是 一般的多面手程式設計師所能掌握的。我還對推薦使用Object字面值、RegExp字面值等等都提出相同的異議。一致性是關鍵。

Igor Costa還質疑編碼約定及最佳實踐是否還包含了一些不必要的規定。例如,他問道:“不要在左括號前後或右括號前面放置任何空格。這樣做:a[0];不要這樣做: a[ 0 ]。真的有必要對空格這麼擔憂嗎?”

與此同時,Tony Fendall認為一致性及好的習慣是有價值的。他說:

就個人來講,我同意所提議的約定。是的,你可以爭論說空格對於程式碼的功能沒有直接的重要作用,但是在所有類及函式看上去都一致的程式碼上工作,要比在每個提交者都有其自己風格的程式碼上工作感覺要好得多。這些好處使得去構建一些好的小習慣的努力是值得的。

其它爭論集中在是使用整數還是無符號整數。編碼約定文件建議對整數使用使用int,即使它們並不能取負值。只對RGB顏 色、位掩碼、及其它非數字值使用uint。“如果你只是想對除了無符號整數的其它東西使用uint,要點是什麼呢?”Keith Petters這樣問道。

Pixel Burner這樣評述:“我已經注意到許多編碼者都在虔誠地使用uintt。可是,我讀了幾篇文章都指出uint比int資料型別慢200%到400%。因此,我幾乎不使用uint”。Burner還引用了最近Gskinner上的一篇文章,該文章特別討論了關於uint的使用。在進行了程式碼測試之後,該文章得出如下結論:

避免使用uint,除非你確實有好的理由必須使用這個型別。在int具有意義的地方使用int,但是不要被int與Number的效能問題所煎熬。在不確定的時候預設使用Number。最重要的是,不要想當然——多做測試和基準測試——你可能會對結果感到驚訝!

然而,Adobe的Sho Kuwamoto強烈建議避免在ActionScript中使用int,如果要使用,只在如下情況下使用:

    1. 當你想節省記憶體的時候。(儘管只有當你有大量資料需要儲存的時候才會影響到你)
    2. 當你想強制一個整數值時。(例如,var i: int = j / 2)
    3. 當你將整數值從客戶端對映到伺服器端的時候,為了減少出錯機率。(例如,值物件中的int域)

在所有爭論中,有一件事是確定的。編碼約定涉及非常多的內容,而不僅僅是格式和可維護性的問題。

檢視英文原文:Adobe Flex Coding Convention Document Triggered Discussions


注:以上內容來自網路,本人不承擔任何連帶責任

文章轉自:http://www.infoq.com/cn/news/2008/05/flex-coding-convention

相關文章