FlexBuider 3を使用した場合、Javaエディタと異なり、ActionScriptではメンバ変数のフォント色を自動的に変えてくれないため一目で見分けがつかない。
この解決方法として命名規則とかでプレフィックスとしてアンダーバーをつけてこれを解決することは妥当なのか考える。
一目で見分けがつかない不便さの解消方法としては_とかをつける他には全ての参照箇所でthis.をつける方法があるがこの方法と比較してみる。
1)this.は参照箇所すべてに付ける必要があり、コーディング規約としては抜けなく守るのが難しい
2)次のようなコードではthis.はHogeインスタンスを示さないので逆にthis.をつけてはならない。こうなるとthis.がついたりつかなかったりで混乱を招く
public class Hoge { var private myMemberStr:String = null; public function AlbumManager(albumUrl:String) { var proc:MyProcedure = new MyProcedure(); proc.execute(); proc.addEventListener(Event.COMPLETE, function(event:ResultEvent):void{ //ここでthis.を入力するとFlexBuilder3のオートコンプリートではmyMemberStrが //候補として表示されるがこれはバグ。 //この行が終わってもHogeインスタンスのmyMemberStrはnullのまま。this.をつけなければ //意図したとおりにHogeインスタンスのmyMemberStrにevent.resultが代入される。 this.myMemberStr = event.result as String; }); } }
以上より全ての参照箇所でthis.をつける方法は危険。よって_をつけるのは妥当である。
なお、基本的には_をつけたメンバ変数は基本的にはprivateにし、アクセスにはgetter, setterを使う。getter, setterでアクセスする際は_はつけない方がかっこいいのではないかと思う。(というか普通そうなのかもしれないが。)
//例 //メンバ変数名には頭に_をつける private var _myMemberStr:String; //関数名には_はつけない public function myMemberStr ():String{ return _myMemberStr; }
結論として
ActionScriptのメンバ変数の命名では頭に_をつける。メンバ変数はprivateとしてそれにアクセスする際にはgetter, setterを用いる。getter, setterの関数名には_はつけない。
0 件のコメント:
コメントを投稿