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/
個人用ツール