これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド perlstyle です。
プログラム:
NAME
perlstyle - Perl スタイルガイド
DESCRIPTION
もちろん、各プログラマーはフォーマットに関して独自の好みを持っています。
ただし、プログラムを読みやすくするための一般的なガイドラインがいくつかあります。
理解し、維持すること。
最も重要なことは、プログラムを次の環境で実行することです。 -w 常にフラグを立てます。 してもいいです
「警告なし」プラグマまたは
必要に応じて $^W 変数を使用します。 また、常に「use strict」で実行するか、
そうしない理由。 「use sigtrap」プラグマや「use Diagnostics」プラグマも証明される可能性があります。
有用。
コード レイアウトの美しさに関して、Larry が唯一強く気にしていることは次のとおりです。
複数行の BLOCK の右中括弧はキーワードと一致する必要があります。
構築を開始しました。 それ以外にも、彼にはそれほど強くない好みもあります。
· 4 列のインデント。
· 開始カーリーはキーワードと同じ行に、可能であれば、そうでない場合は整列します。
· 複数行の BLOCK の開始カーリーの前のスペース。
・XNUMX行BLOCKはカーリーも含めてXNUMX行に入れることができます。
· セミコロンの前にスペースは入れません。
・「短い」一行BLOCKではセミコロンが省略されています。
· ほとんどのオペレータの周囲にスペースを確保します。
· 「複雑な」添え字 (括弧内) の周囲にスペースを入れます。
· 異なる処理を行うチャンク間の空白行。
· 抱きしめられていない他人。
· 関数名とその開き括弧の間にはスペースを入れません。
· 各カンマの後にスペースを入れます。
· 長い行は演算子の後で改行されます (「and」と「or」を除く)。
· 現在の行で一致する最後の括弧の後のスペース。
・該当する項目を縦に並べます。
· 明瞭さを損なわない限り、冗長な句読点を省略します。
ラリーにはこれらのそれぞれの理由があるが、他の人全員がそうだとは主張しない
心も彼と同じように働きます。
考慮すべきその他のより実質的なスタイルの問題を次に示します。
· ただあなただから 缶 特定の方法で何かをするということは、あなたがそうするという意味ではありません すべきである それをやる
そうやって。 Perl は、何かを行うためのいくつかの方法を提供するように設計されています。
最も読みやすいものを選択します。 例えば
オープン(FOO,$foo) || die "$foo を開けません: $!";
よりも優れている
die 「$foo を開けません: $!」 open(FOO,$foo) でない場合;
XNUMX 番目の方法では、ステートメントの要点が修飾子に隠蔽されるためです。 で
一方
$verbose の場合、「分析を開始しています\n」を出力します。
よりも優れている
$verbose && print "分析を開始しています\n";
重要なのはユーザーが入力したかどうかではないからです -v どうか。
同様に、演算子によってデフォルトの引数を仮定できるからといって、それが意味するわけではありません。
デフォルトを使用する必要があるということです。 遅延システムにはデフォルトが存在します
ワンショットプログラムを作成するプログラマー。 プログラムを読みやすくしたい場合は、
引数を指定することを検討してください。
同じように、あなたがいるからといって、 缶 多くの場所で括弧を省略すると、
つまり、次のようにする必要があります。
逆ソート数値 %array を出力します。
return print(reverse(sort num (values(%array))));
疑わしい場合は括弧で囲んでください。 少なくとも、かわいそうな奴らを跳ね返らせることになるだろう
%キー入力で vi.
たとえ疑いがなくても、そうしなければならない人の精神的福祉を考慮してください。
あなたの後にコードを保守してください。間違った場所に括弧を入れる人はいないでしょう。
· Perl の場合、ループを上部または下部で終了するために愚かなねじれをしないでください。
「最後」の演算子を提供するので、途中で終了できます。 それを「アウトデント」するだけです
もっと見やすくするために少しだけ:
ライン:
のために(;;) {
声明。
最後の行 $foo の場合;
次のLINE if /^#/;
声明。
}
· ループ ラベルを使用することを恐れないでください。ループ ラベルは読みやすさを向上させるためだけでなく、
マルチレベルのループ中断を許可します。 前の例を参照してください。
· void コンテキスト、つまり、
戻り値を破棄するだけです。 これらの関数はすべて戻り値を持っているため、次を使用します。
彼ら。 それ以外の場合は、代わりに「foreach()」ループまたは「system()」関数を使用してください。
· 移植性を高めるため、すべてのマシンに実装されていない機能を使用する場合、
eval でコンストラクトをテストして、失敗するかどうかを確認します。 バージョンがわかれば、または
特定の機能が実装されたパッチレベルでは、$] ($PERL_VERSION をテストできます)
"英語") があるかどうかを確認します。 「Config」モジュールでは、次のこともできます。
によって決定された値を調べる 構成 Perl がインストールされたときのプログラム。
· ニーモニック識別子を選択します。 ニーモニックの意味が思い出せない場合は、
問題。
· $gotit のような短い識別子はおそらく問題ありませんが、単語を区切るにはアンダースコアを使用してください
長い識別子で。 一般に $var_names_like_this の方が読みやすいです。
$VarNamesLikeThis、特に英語を母国語としない人にとっては。 それもシンプルな
「VAR_NAMES_LIKE_THIS」と一貫して機能するルール。
パッケージ名は、この規則の例外となる場合があります。 Perl が非公式に予約
「integer」や「strict」などの「pragma」モジュールの小文字のモジュール名。 他の
モジュールは大文字で始めて大文字と小文字を混合して使用する必要がありますが、おそらく大文字は使用しないでください。
プリミティブ ファイル システムのモジュール表現の制限によるアンダースコア
ファイル名は数バイトのまばらなバイトに収まる必要があります。
· 大文字と小文字を区別して、範囲や性質を示すと役立つ場合があります。
変数。 例えば:
$ALL_CAPS_HERE 定数のみ (Perl 変数との衝突に注意してください!)
$ Some_Caps_Hereパッケージ全体のグローバル/静的
$ no_caps_here関数スコープmy()またはlocal()変数
関数名とメソッド名はすべて小文字にするのが最適なようです。 例えば、
「$ obj-> as_string()」。
先頭の下線を使用して、変数または関数を使用してはならないことを示すことができます
それを定義したパッケージの外部で使用されます。
· 非常に複雑な正規表現がある場合は、「/x」修飾子を使用して、
ホワイトスペースを追加して、ラインノイズを少し軽減します。 スラッシュを使用しないでください
正規表現にスラッシュまたはバックスラッシュが含まれる場合の区切り文字。
· 新しい「and」および「or」演算子を使用すると、リスト演算子を括弧で囲む必要がなくなります。
また、「&&」や「||」などの句読点演算子の出現を減らすためです。 電話
過剰を避けるために、サブルーチンを関数またはリスト演算子であるかのように扱う
アンパサンドと括弧。
· "print()" ステートメントを繰り返す代わりに、ヒア ドキュメントを使用します。
· 特に長すぎて XNUMX つに収まらない場合は、対応するものを縦に並べます。
とにかくライン。
$IDX = $ST_MTIME;
$IDX = $ST_ATIME if $opt_u;
$IDX = $ST_CTIME if $opt_c;
$IDX = $ST_SIZE $opt_s の場合;
mkdir $tmpdir, 0700 or die "mkdir $tmpdir: $!";
chdir($tmpdir) または die "$tmpdir を chdir できません: $!";
mkdir 'tmp', 0777 or die "mkdir $tmpdir/tmp: $!";
・システムコールのリターンコードは必ず確認してください。 適切なエラー メッセージは次の場所に送信されます。
「STDERR」には、問題の原因となったプログラム、失敗したシステム コール、および
引数には、(非常に重要) 標準のシステム エラー メッセージを含める必要があります。
何がうまくいかなかったのか。 シンプルですが十分な例を次に示します。
opendir(D, $dir) または die "$dir を開けません: $!";
· 意味のある場合は音訳を並べます。
tr [abc]
[xyz];
· 再利用性を考慮します。 やりたいことがあるのに、ワンショットに知恵を浪費する必要はない
またそのようなものですか? コードを一般化することを検討してください。 モジュールの作成を検討する
またはオブジェクトクラス。 「use strict」と「use」を使用してコードをクリーンに実行することを検討してください。
警告」(または -w) 有効です。 コードを譲渡することを検討してください。 変更を検討してください
全体の世界観。 考えてみてください...ああ、気にしないでください。
· コードを文書化し、一貫した方法で Pod フォーマットを使用するようにしてください。 ここにあります
一般に予想される規則:
· 関数、変数、モジュール名 (さらに一般的には何でも) には「C<>」を使用します。
ファイルハンドルや特定の値など、コードの一部と見なすことができます)。 注記
関数名の後に括弧を付けると読みやすくなると考えられます。
名前、つまり「function()」です。
· 次のようなコマンド名には「B<>」を使用します。 cat or grep.
· ファイル名には「F<>」または「C<>」を使用します。 ファイルの Pod コードは「F<>」のみである必要があります
名前ですが、ほとんどの Pod フォーマッタはそれを斜体で表示するため、Unix および Windows のパスは次のようになります。
スラッシュとバックスラッシュは読みにくくなる可能性がありますが、次のようにするとより適切に表示されます。
「C<>」。
· 一貫性を保つ。
· 親切にしてください。
onworks.net サービスを使用してオンラインで perlstyle を使用する