基本的な書き方

perlという言語を使っておいてあれなんですけど、滅茶苦茶汚くなりやすいです。

他の言語とは比べ物にならないほど、汚くなりやすいです。

「確かに」

というわけで、基本的な書き方を書きたいと思います。

ただし、もちろん、ここに書いてある書き方で書かなければ成らないわけではありません。

参考程度にして、独自に書き方を定めてもかまいません。

あと、参考にしたから必ず綺麗にかけるとはかぎりません。

ご了承ください。



基本


書く上で必ず採用したほうがいいことです。

プラグマstrictとwarningsを、ファイルの先頭で使う。

この二つは、perlを書く上で重要です。

もしperlのバージョンが6ならば、書く必要は皆無です。

標準でstrictになっていますから。


命名規則


命名規則とは、その名のとおり、名前を付ける上での規則です。

「そんなの別にいいんじゃない?」
「よくないわ、阿呆」

というわけで、変数、サブルーチン、パッケージの命名規則を書きます。

変数

  1. ローカル変数(my, local宣言された変数)は基本的に全て小文字。
  2. グローバル変数は、全て大文字。
  3. 単語を_(アンダースコア)で分ける。
  4. ローマ字ではなく、英単語で。
  5. なるべく意味の持つ3文字以上で(意味がわかれば、長ければ長いほど良い。が、長すぎれば当然)。
以上は、スカラ、配列、ハッシュ全てにいえることです。
2は、プログラムを書く上では減らさなければなりません(無いことが一番)。
3は、意味を理解するうえで、日本語の文章に句読点をつけることと同じです。
4は、個人的にローマ字で書かれた変数名が嫌いなのと、読みにくいからです。もしローマ字で書きたいなら、全ての名前をローマ字で書くくらいの気持ちを持ってください。
5は、あまりに短いと、意味を理解しづらいからです。$iや$jなんかは、ループ内のみで使用するようにしましょう。

サブルーチン

  1. 基本的に、全て小文字で書く。
  2. ライブラリでの使用の場合、ライブラリ内で、内部的にのみ使用する関数は、_(アンダースコア)を頭につける。
  3. ローマ字ではなく、英単語で。
  4. 必ず意味の持つ5文字以上で(メソッドとしての宣言は例外)。
  5. サブルーチンをメソッドとして使う場合は、Javaのメソッド風に、最初の単語以外の単語の頭文字を大文字にする。
  6. 単語がいくつかある場合、目的語を先頭に。
1は、メソッド、パッケージ名と重ならないようにするために、全て小文字にします。もし書き方が被れば、メソッドなのかパッケージ名なのか、ただのサブルーチンなのかが人目でわからなくなります。
2は、ライブラリ外で使う必要のない(使うことを推奨しない)ということを明示的にしただけです。Cのライブラリからの伝統です。
4は、3文字では、サブルーチンとしては短いので、5文字くらいを目安に。長すぎたらコーディングが面倒ですし、短すぎれば意味がわからなくなるので、ほどほどに。
5は、普通のサブルーチンとの差異を明示的にする役割があります。一目見て、これはサブルーチンだとか、メソッドだとかわかれば、便利です。わざわざ宣言を見なくても済みます。
6は、どういう目的なのかをわかりやすくするためです。何かを取得するならget、何かを設定するならset、何かを初期化するならinitなど。

パッケージ名

  1. 基本的に、頭文字を大文字にする。
これは、小文字だとプラグマという規則があるようですから。

気をつけること

以下、書く上で気をつけることです。

サブルーチンの呼び出しは、&をつけず()をつけて

&をつけるのは、参照を渡すとき、サブルーチンであることをわからせるために使いましょう。
()をつけるのは、&をつけない代わりに、関数またはサブルーチンであること、そして、引数の有無を明示的にさせる意味があります。

サブルーチンの宣言は、なるべくプロトタイプつきで

Cとは違って、プロトタイプの宣言は不要なperlなのですが、引数をとるかどうかなど、宣言を見ただけではわからず、定義をみて解読するのは、コメントをしていない限り難しいものです。
省略が可能なのか、変数の型は何であるべきか、そもそも、いくつ引数を渡すのか、どの引数が省略可能なのかなど、その他いろいろ。
そんなわけで、プロトタイプ宣言は必要です。
(使い捨て用に使うなら、逆にいらないといえる。)

なるべくパッケージ宣言をする

理由はもちろん、名前の衝突を避けるのが大前提にあります。
同じ名前のサブルーチンが定義されれば、エラーになりますし、思ったとおりに動かなくなります。
自分で作ったライブラリならまだしも、どこかしらから手に入れたライブラリ間で名前が被れば、見つけるのは困難に近いです。
(慣れれば苦労はしませんが)
名前を付けたくない場合でも、package main;としておけば、明示的に属すパッケージを確認できて、わかりやすいです。

goto文は、1プロジェクトに一回だけ

プロジェクトというほどの大きなプログラムを書くかどうかは謎ですが、もしCGIなんかで掲示板を作る場合であれば、その掲示板のプログラム内で一回だけしか使わないようにします。
というか、使わないことが最善です。
perlの場合は特にいえます。
(javaでは、名前の予約はされてますが、実装されていません)

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年03月29日 21:08