Perlコーディングルール
提供: Astarisk Works Wiki
自分で書くPerlスクリプトの自ら課するルールをまとめておく。
標準的なルールを参考にはしているが、あくまで個人ルール。
目次 |
なにはともあれsrtrictとwarning
スクリプトの最初に次を記述する。
use strict; use warnings;
setrictにより、文法チェックが厳しくなり、宣言のない変数の使用ができなくなるが、文法エラーが発見しやすくなる。 加えてwarningsにより適切な警告が表示されデバックがはかどる。
できるだけレキシカル変数を使う
use strictすることにより、不意にグローバル変数を作ってしまうことはないが、ourで宣言するパッケージ変数ではなくできるだけmyで宣言するレキシカル変数(他の言語で言うローカル変数)を使う。
また、localで宣言する変数はモダンでないので使わない。
デフォルト変数は使わない
可読性が落ちるのでデフォルト変数 $_ は使わない。
ただしワンライナーで使うのは別。
命名規則
次の規則で命名。 できる限り簡潔、かつ意味のわかる命名を心がける。
- レキシカル変数
- すべて小文字で単語の間は_(アンダースコア)でつなぐ
- 例) my $user_name
- パッケージ変数
- すべて大文字で単語の間は_(アンダースコア)でつなぐ
- 例) our &SERVER_ADDRESS
- サブルーチン
- すべて小文字で単語の間は_(アンダースコア)でつなぐ
- 例) sub create_user {…}
do~while、goto、redoを使わない
do~whileはnext、lastなどで制御できないので、while文を使う。
goto、redoも制御の流れが追いにくいので使わない。
ファイルを開くときには3引数のopen関数を使う
open関数はセキュリティホールになるのを割けるため ファイルハンドル、モード、ファイル名を指定する3引数形式を使う。
ハンドラ変数はレキシカルにして、open関数内で宣言する。また、エラー処理もしておく。
open my %fh, '<', $file_name or die "file cannot open!"
コメントについて
簡潔に、わかりやすく。
不要モジュールをuseしない
不要なモジュールは不意の動作をさける、リソースの無駄遣いを避けるために極力useし無いようにsんる インポートする関数はできるだけ明記する。それにより何に依存しているのかわかりやすくする
use File::Copy qw/copy move/
日本語の扱いにはEncodeモジュールを使う
Jcode.pm等は使わない。
2バイトの日本語を使うときには次の様にする。
use Encode qw/encode decode/