まず文法規則を作り、それを守る。
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方式は読みにくいし、すべて大文字の場合がうまくいかない。
大文字の使い分け
- サブルーチン、メソッド、変数、ラベル付きの引数の名前は小文字のみ
- パッケージ名とクラス名には、大文字と小文字を組み合わせる。
- 定数には大文字を使用
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 件のコメント:
コメントを投稿