BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 物議をかもしたAdobe Flexのコーディング規約文書

物議をかもしたAdobe Flexのコーディング規約文書

ブックマーク

2008年4月18日、AdobeはFlex SDKのコーディング規約とベストプラクティスを公開した(source)。AdobeのFlexチームの説明によると、この新しい規約は「・・・オープンソースでActionScript3(AS3)で書かれたFlexフレームワークのコンポーネントを書く上でのコーディング標準を定めています。この規約に従うことでソースコードは一貫性と秩序を保ち、プロの仕事らしく見えるようになります。」

その説明にもかかわらず、この公開によりFlex RIAコミュニティの開発者の間で論争が引き起こされた。たとえば、Keith Petters氏(source)はコード規約文書の「Flex執着」と呼んでいる部分が気に入らないという。「私をイライラさせるのは、この規約がFlexドキュメントと名づけられていることです。Flex仕様というようなものは実際ありません。これは完全にAS3のコーディング規約なのです。AdobeにはFlexへの固執を捨てて独立した言語としてのAS3の存在を認めてもらいたいものです。」と彼はコメントしている。これに対しIgor Costa氏(source)は「AdobeのFlexへの固執とAS3を一つの言語として使うこと、それは確かに正しい、Keith。しかしこのドキュメントはFlex 4 SDKのコーディングガイドについてでありSDKに含まれるActionScriptクラスについてだけだ。言語全体に対してではない。」とブログに書いている。

一番活発に行われている議論はおそらく、コードはどのような書式であるべきかということを詳しく論じていることだろう。TL on PLのTom Lee氏(source)は「何か根拠のようなものがあった方が彼らにとってよかったからで、こうしなさい、という命令ではないのだと思います。」と述べている。たとえば、「new Array()ではなくArrayリテラルを使いましょう」のような規約上での例外があることを指摘している。そしてLee氏はこう述べている。

new Array()”はオブジェクトの初期化において他の方法よりも一貫性があるのではないでしょうか?"[]"([1,2,3]のようにAS3で配列の宣言に使われる)は略した記法です。私の見たかぎり略記は通常使わないようにされています。言語により慣れ親しむ必要があるからです。同じように私はこの提議に対して、ObjectのリテラルやRegExp(正規表現を扱うクラス)のリテラルなどを使うことにも異議を唱えたいと思います。一貫性が大切なのです。

Igor Costa氏もコーディング規約とベストプラクティスに不必要な指定が含まれていることに疑問を持っている。たとえば、「左括弧の前後や右括弧の前にはスペースを入れない、とあります。a[ 0 ]ではなくa[0]とするようにということです。空白スペースについて本当に心配する必要があるのでしょうか?」と疑問を投げかけている。

一方、Tony Fendall氏(source)も一貫性と良い慣習の数の少なさにはメリットがあると考えている。彼はこう述べている。

個人的に、推奨されている規約には賛同します。確かにコードの役割的には空白は直接重要でないとも言えるでしょう。しかし全てのクラスや関数で一貫性が保たれていることは、各人がそれぞれのスタイルでコードを書いているより効果があります。限りなく少ない慣習だけでタスクをこなすメリットは一貫性を保つだけの価値があるのです。

整数と符号なし整数の使用についての議論もある。今回のコーディング規約文書では整数値に対しては、たとえマイナスにならなくてもint型を使うように推奨している。そしてuint型はRGB値やビットマスクやその他の非数値に対してだけ使うようにとある。「符号なしの整数値以外のものに対してだけuint を使うことに意味はあるのだろうか?」とKeith Petters氏は疑問視している。

Pixel Burner氏はこう意見している。「多くのプログラマが律儀にuintを使っていることに気がつきました。しかし私はいくつかの記事で、uintは int型に比べて200から400パーセント遅くなる可能性があると読みました。なので私はuintは使わないのです。」Burner氏が触れている gskinner.com(source)の最近の記事では特にuintの使用について書かれている。この記事ではコードをテストしてから次のように書いている。

uint を使う使うちゃんとした理由がないかぎりuintは使わないようにしましょう。intを使った方がいいのであればintを使って構いませんが、int型と Number型のパフォーマンス優劣は気にするほどではありません。理由がなければNumberをデフォルトで使いましょう。一番大切なのは、思い込まないことです。可能であればテストとベンチマークをしてみましょう。その結果は驚くものになる可能性があります。

このような議論があるが、AdobeのSho Kuwamoto氏(source)は結局ActionScriptでは次の場合以外はintを使わないことを強く推奨している。

    1. メモリを節約したい時(大量の数値を格納する時には違いが出てくる)
    2. 整数値がほしい時(例:var i: int = j / 2)
    3. 整数値をクライアントサイドからサーバサイドに送る際にバグが起きにくいようにするため(例:バリューオブジェクトのint型変数)

全ての議論から確かに分かるのは、コーディング規約には書式や保全性だけでなく一切合財が含まれるということだ。

原文はこちらです:http://www.infoq.com/news/2008/05/flex-coding-convention

この記事に星をつける

おすすめ度
スタイル

BT