2010年9月10日金曜日

Perl best practices[Perlベストプラクティス] 11章 参照


このエントリーをはてなブックマークに追加


サーカムフィックス(circumfix)逆参照を使わない


 サーカムフィックス(circumfix)逆参照とは、コレ=>${$list_ref}[0]
 代わりに矢印をつかって、$list_ref->[0] とすること。矢印のほうがすっきり書けるし、2重引用符で文字列に展開できるという利点がある。また、逆参照のほうは、中括弧や、プレフィックス$を忘れてもコンパイルエラーにならないというデメリットがある。

 スライスをする場合は、逆参照を使う他ない。



#下記のコードは同じ意味になる。
#$list_refが$で始まるので、[]はスカラーコンテキストで評価される。
my ($from, $to) = $list_ref->[0, -1];

my ($from, $to) = ($list_ref->[-1], undef);




逆参照しか選択の余地がないときは{}で囲む


 $$$stack_ref[0]とかはダメ。


シンボリック参照を決して使用しない


 シンボルを使うと、型グロブを通じて、現在の名前空間のパッケージ変数を参照する。
 パッケージ変数を使用する必要はほぼないはずで、大体レキシカルハッシュで代用できる。


双方向参照のデータ構造では、weakenを使用する


 双方向参照では、片方がスコープを外れたりして、削除されても、もう片方から参照されているのでガベージコレクションの対象にならず、メモリが開放されない。
 そこで、weakenを使用すると、参照カウントが1減るが、参照自体は残すことができる。片方がスコープから外れると、参照カウンタは0になるので、両方の参照ともに正しく消滅する。





0 件のコメント:

コメントを投稿