- 2009-05-12 (火) 22:59
- action script
ActionScript 3.0 になって AS2 とはスコープの扱いが変更されて、まぁ移行に戸惑うこともあるけれども、とにかく AS2 と AS3 のスコープが変更されている。
で、あまりスクリプトが理解できていない僕でも実感するのは、スコープが変わったので AS2 と AS3 の this の扱いが違うということ。極論すると AS3 では this を書かなくても動く場合が増えた。クラス内ではほとんど書かなくてもうまく動く。
そんな浅い理解でのうのうとやっていたら、最近 AS を始めて僕にハイレベルな質問を投げかける kawa.net の川崎さんに「this を書くのと書かないのはどっちがクールなの?」と聞かれました。もちろん僕ごときがうかつな解答をして前途輝く川崎さんの AS ライフを汚すわけにはまいりません。ということで twitter で皆様におたずねさせていただきました。
青字が this つけない派、赤字が this つける派ということで以下そのやりとり。
trick7 AS3書きの皆様に質問:クラスで”this”書きます?僕書かない派だったのですが、書く方が正当派なのでしょうか?
bkzen @trick7 書かない派です。
trick7 書かなくていいのか。ってか挙動が変わるか。
hara3 @trick7 明示的にしたい時は書きますが、普段はほとんどthis省略してます。
chaoslave @trick7 自分もthis書かなくなりましたねー。本当、どっちがいいんでしょうかね?
dkgkAs メンバ変数と引数のローカル変数を同じ名前にした時だけthisってる気がします(Java式?) よくわかってませんけどw
trick7 ありがとうございますー。最近AS書かれてるkawa.netの人にどっちがクールか聞かれたんですけど、僕明言できんかったもので。。
muta @trick7 必要な時以外は書かないです。super と同じ感覚で扱ってます。
muta @trick7 もちろん、super とは意味が全然違いますが・・・。
ton1517 @trick7 だいたいコンストラクタだけでしか使ってません @dkgkAs と同じ使い方です
northprint thisは必要な時以外書かないかもですね。。。ProgressionのコマンドのFunc内とか
dkgkAs @ton1517 わーい一緒
northprint この辺の話とかかな 参考リンク
dkgkAs あぁ、メンバ変数にアンダースコア付けるかどうか?ってのも同じくらい迷うんですよね。これ付けちゃうとthis付けるところがほとんど無くなるw
ton1517 @dkgkAs 付けない派です 理由はアンダースコア打つのがしんどいからw
dkgkAs @ton1517 _しんどいってww
ton1517 @dkgkAs _よりもthis.のほうが打つの速いんです・・・w
mogera 前は関数の引数の方にアンダースコアつけててthis使わなくて、今は逆にメンバ変数に付けて。結局thisは使わない派だなぁ。
ton1517 @mogera アンダースコア打つときの小指がすごいしんどいんだけど俺だけ?w
mogera @ton1517 全然wでもノートだとよくうち間違えるー
dkgkAs アンダースコア付けると、ぱっと見わかりやすくて良いんだけど、ローカル変数をメンバ変数にしたくなったときに、アンダースコア付けなおさないといけないから手間なんですよね
dkgkAs で、今時のIDEならメンバ変数を判断して色付けたり出来る、ってのを見かけてFlashDevelopで出来ないか調べてみたんだけど、やりかたわからなかった
dkgkAs これが出来ればアンダースコアを付ける理由が少なくなる気がしますね
beinteractive @trick7 this 書くのはスコープを意識する必要があるなど特別な場合のみです。その方があとからコード見ても分かるし。
AkiraCS @trick7 僕はデザインによってはけっこう省略しがちですけど書いたほうが正統派だと思います。
clockmaker this,_議論に乗り遅れた。自分はつけない派。タイムラインとかprototype拡張するときはつけるけど。
alumican_net 僕もthisは付けない。でもgotoAndPlayとgotoAndStopは昔thisを付けるか付けないかで挙動(というか仕様)が変わっていた名残で付ける。
paq89 thisは基本付けないなー。たまに間違えて入力しちゃう。
paq89 _は付けたり付けなかったり。基本的に付けない。
naggg 遅れましたけど。thisつけない派です。つけたら負けかな派ですw this使うのは関数の引数とプロパティがかぶるときくらいですね。this.hoge = hoge みたいな。
clockmaker thisつけない派が多いですね~。
Saqoosha おれ、this つけまくり。
doke AS3はthisつけない。AS2はthisあったほうが見やすいときがある
sososososososo @trick7 遅ればせながら、わたしは「this好き好き派」です。ないととてもさびしいです。どこかで、付けた方が速いって見たんですが、検証してみようかな。
Jr_s thisなし派が多いんですかね?
ll_koba_ll this無し派。明示的に必要なときだけつける
kmxs this は付けているw
izm_design 基本的にはつけない>this と、凄まじく乗り遅れたポストをしてみる。
akirafukuoka そういえばAS3になってからほとんどthisつけなくなっちゃった。
kmxs 付けてダメだったら直すけどっていうかそもそもあんまこだわりない…
cellfusion this は必要なときだけつければいいですよ。this 有りと this なしではそもそも意味が違うし
Laqu 俺もつけないですthis
hoehoe this付けると「これオレの!」感が出て好き。
aobaba そういえば自然にthisを書かなくなってるな。
trick7 使わない派が多いですけど、正式にはつけた方が・thisしたほうが早い・そもそも意味が違うというご意見もあり、決着は付けがたいという感じなのですねー。
muta @trick7 以前実験した際, 速度的には変わらなかった気がします。
y_tti 本日this祭り開催されてたんですね。@_sakotsu先生のthatに不覚にもワロてしもた。ちなみに僕はつけない派。
naoto5959 あのブログに載ってた方々をフォロー&thisはかかない(今更)というかflexコーディング規約にだいたい合わせてる
keno42 public var data; public function CustomEvent(type, data){super(type); this.data=data;} //this使うケース
keno42 i should define private var _data instead and setter/getter though
cellfusion @keno42 _data とかにしていちいち getter/setter 作ってるアホが通りますw
cellfusion Progression 使ってると this 使いまくりですよ(ぇ
cellfusion FDT だと getter/setter すぐにできる。
flair4jp 社内のコーディング規約的には明示的な参照や、スコープチェーン以外では用いなくてよいとしています。
flair4jp さらにいうと _ は private なクラスメンバには付ける事と規約で定めています。スコープの範囲が明確化されるので複数人で開発する際に役に立っています。
flair4jp 簡単に書き分けると public var hoge; private var _hoge; public const HOGE; private const _HOGE; です。
flair4jp ローカル変数に関しては基本的に規約はありませんが、個人的には var x_; とすることがあります。
keno42 @cellfusion i love shift+ctrl+1 in FD!
flair4jp asはコンパイラを通し実行ファイル化されるため、thisの有無による速度差は無いはず。
flair4jp あと、thisつけたら明確になるという意見をたまに聞きますが、スコープを理解してないとそもそもthisで明確になるとは思えないのが個人的な見解です。
a_24 thisはコンストラクタ内だけ使用する派(遅
katapad マイケルジャクソンはthisつける派
TaskBSM 最近はムービークリップでthis.stop();を使うくらいしかないな
ということで人それぞれでした。貴重なご回答みなさまどうもありがとうございましたー。
クールにコーディングしたい人のための参考:
多少物議をかもしていたらしいAdobe の Flex SDK コーディング規約(僕の日本語訳・Adobe 日本の訳←リンクわからん)
- Newer: Web Designer Inspire Night VOL.2 で喋ります
- Older: 「女の子ものがたり」






![Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編]](http://ecx.images-amazon.com/images/I/617sNhK9P9L._SL75_.jpg)


![FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付]](http://ecx.images-amazon.com/images/I/51915J1BG6L._SL75_.jpg)


