2010年8月30日月曜日

Perl best practices[Perlベストプラクティス] 3章 命名規則


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


まず文法規則を作り、それを守る。
Perlの文法概要は、CPANのPare::RecDescentモジュール付属のtutorial.html参照。

パッケージやクラス名の命名


<名前空間> =>   <名詞> :: <形容詞> :: <形容詞>
or <名詞> :: <形容詞>
or <名詞>
ただし、この階層関係はPerlで自動で反映されるものではない。
以下のように明示的に示す。

package Disk;

package Disk::DVD;
use base qw( Disk );

package Disk::DVD::Rewritable;
use base qw( Disk::DVD );



変数名は具体的につける


複数のブロックで使用される変数の名前は、常に2つ以上の要素で構成される名前を付ける。
変数の名前は、[<形容詞> _ ]* <名詞>のように、0個以上の形容詞を名詞の前に付ける。
例えば、$total_scoreではなく、$running_totalにすると、途中の累計スコアを追跡していることが分かる。

参照テーブルには前置詞を用いる


参照テーブルに使われるハッシュや配列は名詞の最後に前置詞を追加する。
[<形容詞> _]* <名詞> <前置詞>

my %title_of;
my %ISBN_for;
my @sales_from;

for my $book ( @catalog ) {
print "$ISBN_for{$book}  $title_of{$book}: $sales_from{$month}\n";
}



サブルーチンやメソッドの命名


動詞 + 0回以上の形容詞 + 名詞 + (必要ならば、前置詞or分詞)

sub get_record;          #動詞、名詞
sub get_record_for;      #動詞、名詞、前置詞

sub eat_cookie;          #動詞、名詞
sub eat_previous_cookie; #動詞、形容詞、名詞

sub build_profile;                  #動詞、名詞
sub build_execution_profile;        #動詞、形容詞、名詞
sub build_execution_profile_using;  #動詞、形容詞、名詞、分詞



ブール値


基本的には、is_かhas_で始まることが多い。
以下の名前は自分でも使えそうなので、覚えておこう。

sub is_valid;
sub metadata_available_for;
sub has_end_tag;



参照変数には_refをつける


語尾に_refをつける。
僕は、頭にref_を付けてましたが、refの後にすぐに矢印参照があるほうがいいということのようです。(Perl6でなくなるようですが)

配列は複数形とハッシュは単数形


まとめて反復的に処理される配列は複数形の名前を。
ハッシュは、個別にアクセスされることが多いので単数形。
使い方に合わせて、例外あり。

変数の名前つなぎはアンダースコアを使う。


英語はスペースで区切られているが、アンダースコアの存在のなさがスペースに近い印象を与えるため。InterCaps方式は読みにくいし、すべて大文字の場合がうまくいかない。

大文字の使い分け



  1. サブルーチン、メソッド、変数、ラベル付きの引数の名前は小文字のみ

  2. パッケージ名とクラス名には、大文字と小文字を組み合わせる。

  3. 定数には大文字を使用

my $controller
= IO::controller->new(src=>$fh,  mode=>$SRC|$NODE);


固有名詞や、標準略語、単位などの識別子には当てはまらない。

略記は先頭部で示す


先頭のほうの母音などを削ると読みにくい。
length=>len ならわかるけど、 lnghだと分からない。
最後の子音が複数形を表すものは残してもいい。$orig_strs,prefix()など。
また、一般的に広く使われいる名前は例外とする。

意味がわからない略記はしない



  • val

    • value? valid?_

  • temp

    • temperature? temporary?

  • dev

    • device? deviation?

  • left

    • 方向か、残りか

  • right

    • 方向か、正しいのか、権利か

  • no

    • 否定か、ナンバーか

  • abstract

    • 理論的であることか、概略か、要約か

  • contract

    • 短縮か、法的契約か

  • record

    • 最高結果か、データ集合か、記録することか

  • second

    • 2番目か、秒か

  • close

    • 近いのか、閉じているのか

  • bases

    • 複数の基数か、複数の基準か



ユーティリティサブルーチン


モジュールからエクスポートしたり、クライアントが使用しない、内部使用専用のサブルーチンは先頭にアンダースコアを付ける。




0 件のコメント:

コメントを投稿