コーディングスタイルだけは一人前を目指す試み :: (2)
Perlベストプラクティスを読み倒して、実践していけば少しはコーディングスタイルも向上するはず。
3章 命名規則
3.1 識別子
識別子の組み立てには文法テンプレートを使用する
■パッケージやクラス
<名前空間> → <名詞> :: <形容詞> :: <形容詞> | <名詞> :: <形容詞> | <名詞>
■変数
<変数> → [<形容詞> _ ]* <名詞>
■ハッシュや配列
<変数> → [<形容詞> _ ]* <名詞> <前置詞>
■サブルーチンやメソッド
<ルーチン> → <命名法の動詞> [ _ <形容詞> ]? _ <名詞> _ <前置詞> | <命名法の動詞> [ _ <形容詞> ]? _ <名詞> _ <分詞> | <命名法の動詞> [ _ <形容詞> ]? _ <名詞>
3.2 ブール
ブールには、関連する評価にちなんだ名前を付ける
明示的に。
3.4 配列とハッシュ
配列の名前は常に複数形、ハッシュの名前は常に単数形にする
# 配列 my @events; my @handlers; my @unknowns; # ハッシュ my %option; my %title_of; my %count_for; my %is_available;
3.5 アンダースコア
アンダースコアを使って複数の単語からなる識別子の単語を区切る
FORM: for my $tax_form (@tax_form_sequence) { my $notional_tax_paid = tax_form->{reported_income} * $tax_form->{effective_tax_rate}; next FORM if is $notional_tax_paid < $MIN_ASSESSABLE; $total_paid += $notional_tax_paid - $tax_form->{allowed_deductions}; }
3.6 大文字の使い分け
プログラムのコンポーネントの種類は大文字と小文字の使い分けで区別する
- サブルーチン、メソッド、変数、およびラベル付きの引数の名前には、小文字のみを使用する
- パッケージ名とクラス名には、大文字と小文字を組み合わせて使用する
- 定数には大文字を使用する
3.7 略記
略記は先頭部で示す
use List::Util qw( max ); DESC: for my $desc (@orig_strs) { my $len = length $desc; next DESC if $len > $UPPER_LIM; $max_len = max($max_len, $len); }
3.8 意味不明な略記
略記を使用するのは、そうしても意味が明白な場合だけにする
sub swap_domain_and_range_of { my ($table_ref) = @_; my @pivotted_table; for my $x (0..$#{$table_ref}) { for my $y (0..$#{$table_ref->[$x]}) { $pivotted_table[$x][$y] = $table_ref->[$x][$y]; } } return \@pivotted_table; }
ネストしたループでは、標準的な1文字の反復子変数($i, $j, $k, $n, $x, $y, $z)でも問題がない場合が多い。特にインデックスが何らかの座標である場合など。
3.9 意味不明な名前
そもそも不可解な単語を名前に使用しない
多義を持つ単語を含んだ名前は本質的に不明瞭なものになる。
3.10 ユーティリティサブルーチン
「内部使用専用の」サブルーチンの先頭にはアンダースコアを付ける
ユーティリティサブルーチンは、モジュールまたはクラスの実装を簡略化するためにのみ存在する。
名前の「1文字目」として、常にアンダースコア(_)を使用すること。