[perldocjp-cvs 255] CVS update: docs/perl/5.10.0

Back to archive index

argra****@users***** argra****@users*****
2008年 5月 29日 (木) 03:37:28 JST


Index: docs/perl/5.10.0/perlstyle.pod
diff -u /dev/null docs/perl/5.10.0/perlstyle.pod:1.1
--- /dev/null	Thu May 29 03:37:28 2008
+++ docs/perl/5.10.0/perlstyle.pod	Thu May 29 03:37:28 2008
@@ -0,0 +1,724 @@
+
+=encoding euc-jp
+
+=head1 NAME
+
+=begin original
+
+perlstyle - Perl style guide
+
+=end original
+
+perlstyle - Perl スタイルガイド
+
+=head1 DESCRIPTION
+
+=begin original
+
+Each programmer will, of course, have his or her own preferences in
+regards to formatting, but there are some general guidelines that will
+make your programs easier to read, understand, and maintain.
+
+=end original
+
+プログラマは、もちろん人それぞれ、フォーマットには好みがあるでしょう。
+しかし、いくつかのガイドラインに従うことによって、プログラムの可読性や
+保守性をあげることができます。
+
+=begin original
+
+The most important thing is to run your programs under the B<-w>
+flag at all times.  You may turn it off explicitly for particular
+portions of code via the C<no warnings> pragma or the C<$^W> variable
+if you must.  You should also always run under C<use strict> or know the
+reason why not.  The C<use sigtrap> and even C<use diagnostics> pragmas
+may also prove useful.
+
+=end original
+
+もっとも重要なことは、つねにプログラムを B<-w> フラグをつけて
+走らせることです。
+必要であれば、C<no warnings> プラグマや C<$^W> 変数を使用してコードの
+一部だけで警告を明示的にオフにします。
+また、つねに C<use strict> を使用すべきです。
+もし、C<use strict> を使用しないなら、その理由を十分に理解しておくべきです。
+C<use sigtrap> や C<use diagnostics> プラグマも便利でしょう。
+
+=begin original
+
+Regarding aesthetics of code lay out, about the only thing Larry
+cares strongly about is that the closing curly bracket of
+a multi-line BLOCK should line up with the keyword that started the construct.
+Beyond that, he has other preferences that aren't so strong:
+
+=end original
+
+コードレイアウトの美観に関しては、Larry が強く気にかけているのはたった一つ、
+複数行の BLOCK の閉じ中かっこは、その構造を開始したキーワードと同じ位置に
+なくてはならないということだけです。
+それは別として、そこまで強くはない彼の好みは以下の通りです:
+
+=over 4
+
+=item *
+
+=begin original
+
+4-column indent.
+
+=end original
+
+4 カラムのインデント。
+
+=item *
+
+=begin original
+
+Opening curly on same line as keyword, if possible, otherwise line up.
+
+=end original
+
+可能なら、開始中かっことキーワードを同一行に。
+そうでなければ、開始をそろえる。
+
+=item *
+
+=begin original
+
+Space before the opening curly of a multi-line BLOCK.
+
+=end original
+
+複数行 BLOCK の開始中かっこの前にスペース。
+
+=item *
+
+=begin original
+
+One-line BLOCK may be put on one line, including curlies.
+
+=end original
+
+1 行の BLOCK は中かっこも含め、1 行で。
+
+=item *
+
+=begin original
+
+No space before the semicolon.
+
+=end original
+
+セミコロンの前に空白なし。
+
+=item *
+
+=begin original
+
+Semicolon omitted in "short" one-line BLOCK.
+
+=end original
+
+"短い" 1 行 BLOCK ではセミコロンを省略。
+
+=item *
+
+=begin original
+
+Space around most operators.
+
+=end original
+
+ほとんどの演算子の前後にはスペース。
+
+=item *
+
+=begin original
+
+Space around a "complex" subscript (inside brackets).
+
+=end original
+
+"複雑な"代入(ブラケット内)の前後にはスペース。
+
+=item *
+
+=begin original
+
+Blank lines between chunks that do different things.
+
+=end original
+
+異なることをするチャンクの間には空行。
+
+=item *
+
+=begin original
+
+Uncuddled elses.
+
+=end original
+
+else をくっつけない。
+
+=item *
+
+=begin original
+
+No space between function name and its opening parenthesis.
+
+=end original
+
+関数名と開始カッコの間にはスペースなし。
+
+=item *
+
+=begin original
+
+Space after each comma.
+
+=end original
+
+カンマの後ろにはスペース。
+
+=item *
+
+=begin original
+
+Long lines broken after an operator (except C<and> and C<or>).
+
+=end original
+
+長い行は、演算子の後ろで改行する(C<and> と C<or> を除く)。
+
+=item *
+
+=begin original
+
+Space after last parenthesis matching on current line.
+
+=end original
+
+行の最後のカッコの後ろにスペース。
+
+=item *
+
+=begin original
+
+Line up corresponding items vertically.
+
+=end original
+
+対応する要素の開始位置をそろえる。
+
+=item *
+
+=begin original
+
+Omit redundant punctuation as long as clarity doesn't suffer.
+
+=end original
+
+冗長な表現は、わかりにくくならない限りは省略する。
+
+=back
+
+=begin original
+
+Larry has his reasons for each of these things, but he doesn't claim that
+everyone else's mind works the same as his does.
+
+=end original
+
+Larry にはこれらそれぞれを好む理由がありますが、彼以外の人がこれとまったく
+同じである必要はないといっています。
+
+=begin original
+
+Here are some other more substantive style issues to think about:
+
+=end original
+
+他に、より重要なスタイルの問題を示します:
+
+=over 4
+
+=item *
+
+=begin original
+
+Just because you I<CAN> do something a particular way doesn't mean that
+you I<SHOULD> do it that way.  Perl is designed to give you several
+ways to do anything, so consider picking the most readable one.  For
+instance
+
+=end original
+
+何かをある方法で I<できる> からといって、そう I<すべき> とは限りません。
+Perl は一つのことを様々な方法でできるように設計されていますから、より
+読みやすいものを選ぶように心がけてください。
+たとえば、
+
+    open(FOO,$foo) || die "Can't open $foo: $!";
+
+=begin original
+
+is better than
+
+=end original
+
+というのは以下のものより良いです:
+
+    die "Can't open $foo: $!" unless open(FOO,$foo);
+
+=begin original
+
+because the second way hides the main point of the statement in a
+modifier.  On the other hand
+
+=end original
+
+なぜなら、2 つ目では、この文の主要部が修飾子に隠れてしまっています。
+逆に、
+
+    print "Starting analysis\n" if $verbose;
+
+=begin original
+
+is better than
+
+=end original
+
+というのは以下のものより良いです:
+
+    $verbose && print "Starting analysis\n";
+
+=begin original
+
+because the main point isn't whether the user typed B<-v> or not.
+
+=end original
+
+この文の主要部は、ユーザが B<-v> をタイプしたかどうか
+ではないからです。
+
+=begin original
+
+Similarly, just because an operator lets you assume default arguments
+doesn't mean that you have to make use of the defaults.  The defaults
+are there for lazy systems programmers writing one-shot programs.  If
+you want your program to be readable, consider supplying the argument.
+
+=end original
+
+同様に、ある演算子がデフォルト引数を想定しているからといって、その
+デフォルトを使わなくてはならないということにはなりません。
+このデフォルト値があるのは、怠惰なシステムプログラマが、一発プログラムを
+書くときのためにあります。
+プログラムを読みやすくするには、引数を省略しないようにしましょう。
+
+=begin original
+
+Along the same lines, just because you I<CAN> omit parentheses in many
+places doesn't mean that you ought to:
+
+=end original
+
+同様に、多くの場所でカッコを省略 I<できます> が、以下のように
+省略しすぎることは控えるべきでしょう:
+
+    return print reverse sort num values %array;
+    return print(reverse(sort num (values(%array))));
+
+=begin original
+
+When in doubt, parenthesize.  At the very least it will let some poor
+schmuck bounce on the % key in B<vi>.
+
+=end original
+
+迷ったときは、カッコを書いてください。
+少なくとも、間違えた部分は B<vi> の % キーでハイライトすることができます。
+
+=begin original
+
+Even if you aren't in doubt, consider the mental welfare of the person
+who has to maintain the code after you, and who will probably put
+parentheses in the wrong place.
+
+=end original
+
+迷っていないときも、あとでそのコードをメンテナンスする人の生活を
+考えてください。
+間違った個所にカッコをいれてしまうかもしれません。
+
+=item *
+
+=begin original
+
+Don't go through silly contortions to exit a loop at the top or the
+bottom, when Perl provides the C<last> operator so you can exit in
+the middle.  Just "outdent" it a little to make it more visible:
+
+=end original
+
+ループの先頭や末尾で抜け出すのに、ばかげたコードをかかないでください。
+Perl には C<last> 演算子があるので、途中で抜け出すことができます。
+ちょっとだけ読みやすくするには "アウトデント" します:
+
+    LINE:
+	for (;;) {
+	    statements;
+	  last LINE if $foo;
+	    next LINE if /^#/;
+	    statements;
+	}
+
+=item *
+
+=begin original
+
+Don't be afraid to use loop labels--they're there to enhance
+readability as well as to allow multilevel loop breaks.  See the
+previous example.
+
+=end original
+
+ループのラベルは積極的に使いましょう -- 可読性をあげるのと共に、多段階の
+ループ抜け出しもできるようになります。
+先ほどの例を見てください。
+
+=item *
+
+=begin original
+
+Avoid using C<grep()> (or C<map()>) or `backticks` in a void context, that is,
+when you just throw away their return values.  Those functions all
+have return values, so use them.  Otherwise use a C<foreach()> loop or
+the C<system()> function instead.
+
+=end original
+
+C<grep()> (や C<map()>)、また `逆クォート` を無効コンテキスト、つまり
+返り値を無視する文で使用しないでください。
+これらの関数はすべて返り値を持っていますから、それを使用してください。
+いらないのであれば、C<foreach()> ループや C<system()> 関数を
+使用してください。
+
+=item *
+
+=begin original
+
+For portability, when using features that may not be implemented on
+every machine, test the construct in an eval to see if it fails.  If
+you know what version or patchlevel a particular feature was
+implemented, you can test C<$]> (C<$PERL_VERSION> in C<English>) to see if it
+will be there.  The C<Config> module will also let you interrogate values
+determined by the B<Configure> program when Perl was installed.
+
+=end original
+
+ポータビリティのために、すべてのマシンで実装されていないかもしれない機能を
+使用する際は、それを eval で囲って、失敗するかどうかチェックしてください。
+ある機能が、どのバージョンやパッチレベルで実装されているか知っている
+場合には、C<$]> (C<English> モジュールでは、C<$PERL_VERSION>) を
+チェックすることもできます。
+C<Config> モジュールを使えば、Perl インストール時の C<Configure> プログラムに
+よって決定された値を調べることができます。
+
+=item *
+
+=begin original
+
+Choose mnemonic identifiers.  If you can't remember what mnemonic means,
+you've got a problem.
+
+=end original
+
+ニーモニックな識別子を選んでください。
+そのニーモニックが何を意味するか思い出せなければ、問題です。
+
+=item *
+
+=begin original
+
+While short identifiers like C<$gotit> are probably ok, use underscores to
+separate words in longer identifiers.  It is generally easier to read
+C<$var_names_like_this> than C<$VarNamesLikeThis>, especially for
+non-native speakers of English. It's also a simple rule that works
+consistently with C<VAR_NAMES_LIKE_THIS>.
+
+=end original
+
+C<$gotit> のような短い識別子なら ok ですが、 in longer identifiers 単語を
+区切るにはアンダースコアを使用してください。
+一般的には、とくに英語のネイティブスピーカーでない人にとっては、C<$var_names_like_this> の方が C<$VarNamesLikeThis> より読みやすいです。
+このルールは C<VAR_NAMES_LIKE_THIS> についても同様に当てはまります。
+(TBT)
+
+=begin original
+
+Package names are sometimes an exception to this rule.  Perl informally
+reserves lowercase module names for "pragma" modules like C<integer> and
+C<strict>.  Other modules should begin with a capital letter and use mixed
+case, but probably without underscores due to limitations in primitive
+file systems' representations of module names as files that must fit into a
+few sparse bytes.
+
+=end original
+
+パッケージ名は、このルールの例外になることがあります。
+Perl は小文字のモジュール名を、C<integer> や C<strict> のような"プラグマ"
+モジュールのために予約しています。
+その他のモジュールは大文字からはじめて、小文字を混ぜて使用すべきですが、
+アンダースコアは使用しません。
+プリミティブなファイルシステムでは、モジュール名をファイルとして
+表現する際に、バイト数の制限があるためです。
+
+=item *
+
+=begin original
+
+You may find it helpful to use letter case to indicate the scope
+or nature of a variable. For example:
+
+=end original
+
+変数のスコープや性質を表現するのに、大文字小文字を使うと便利でしょう。
+たとえば:
+
+=begin original
+
+    $ALL_CAPS_HERE   constants only (beware clashes with perl vars!)
+    $Some_Caps_Here  package-wide global/static
+    $no_caps_here    function scope my() or local() variables
+
+=end original
+
+    $ALL_CAPS_HERE   定数のみ (perl 変数との衝突に注意!)
+    $Some_Caps_Here  パッケージワイドなグローバル/スタティック変数
+    $no_caps_here    関数スコープの my(),local()変数
+
+=begin original
+
+Function and method names seem to work best as all lowercase.
+E.g., C<$obj-E<gt>as_string()>.
+
+=end original
+
+関数とメソッドの名前はすべて小文字だとベストです。
+例えば、C<$obj-E<gt>as_string()>。
+
+=begin original
+
+You can use a leading underscore to indicate that a variable or
+function should not be used outside the package that defined it.
+
+=end original
+
+先頭にアンダースコアをつけることによって、変数や関数を定義したパッケージ外で
+使用すべきでないことを命じすることができます。
+
+=item *
+
+=begin original
+
+If you have a really hairy regular expression, use the C</x> modifier and
+put in some whitespace to make it look a little less like line noise.
+Don't use slash as a delimiter when your regexp has slashes or backslashes.
+
+=end original
+
+ほんとにごちゃごちゃな正規表現を使う場合には、C</x> 修飾子を使用して
+スペースをいれ、ごみみたいにならないようにしてください。
+正規表現内にスラッシュやバックスラッシュがあるときには、デリミタに
+スラッシュを使わないように。
+
+=item *
+
+=begin original
+
+Use the new C<and> and C<or> operators to avoid having to parenthesize
+list operators so much, and to reduce the incidence of punctuation
+operators like C<&&> and C<||>.  Call your subroutines as if they were
+functions or list operators to avoid excessive ampersands and parentheses.
+
+=end original
+
+新しい C<and> と C<or> 演算子を使用し、リスト演算子のカッコがたくさんに
+なったり、C<&&> や C<||> が大量発生するのを避けてください。
+サブルーチンは、関数やリスト演算子であるかのように扱い、アンパサンドや
+カッコが大量発生するのを避けてください。
+
+=item *
+
+=begin original
+
+Use here documents instead of repeated C<print()> statements.
+
+=end original
+
+C<print()> 文を繰り返さず、ヒアドキュメントを使用してください。
+
+=item *
+
+=begin original
+
+Line up corresponding things vertically, especially if it'd be too long
+to fit on one line anyway.
+
+=end original
+
+対応するものの開始位置はそろえてください、とくに、1行におさまらないものに
+関して。
+
+    $IDX = $ST_MTIME;
+    $IDX = $ST_ATIME 	   if $opt_u;
+    $IDX = $ST_CTIME 	   if $opt_c;
+    $IDX = $ST_SIZE  	   if $opt_s;
+
+    mkdir $tmpdir, 0700	or die "can't mkdir $tmpdir: $!";
+    chdir($tmpdir)      or die "can't chdir $tmpdir: $!";
+    mkdir 'tmp',   0777	or die "can't mkdir $tmpdir/tmp: $!";
+
+=item *
+
+=begin original
+
+Always check the return codes of system calls.  Good error messages should
+go to C<STDERR>, include which program caused the problem, what the failed
+system call and arguments were, and (VERY IMPORTANT) should contain the
+standard system error message for what went wrong.  Here's a simple but
+sufficient example:
+
+=end original
+
+システムコールの返りコードはつねにチェックしてください。
+良いエラーメッセージは C<STDERR> に書き出され、問題を発生させた
+プログラム名や、失敗したシステムコールと引数、そして(とても重要)標準
+システムエラーメッセージを含むべきです。
+以下はシンプルですが、十分な例です:
+
+    opendir(D, $dir)	 or die "can't opendir $dir: $!";
+
+=item *
+
+=begin original
+
+Line up your transliterations when it makes sense:
+
+=end original
+
+見やすくなる場合には、tr の開始位置をそろえてください。
+
+    tr [abc]
+       [xyz];
+
+=item *
+
+=begin original
+
+Think about reusability.  Why waste brainpower on a one-shot when you
+might want to do something like it again?  Consider generalizing your
+code.  Consider writing a module or object class.  Consider making your
+code run cleanly with C<use strict> and C<use warnings> (or B<-w>) in
+effect.  Consider giving away your code.  Consider changing your whole
+world view.  Consider... oh, never mind.
+
+=end original
+
+再利用性を考慮しましょう。
+同じことをあとでやるかもしれないときに、脳の力を一発のプログラムで
+無駄にする必要はありますか?
+コードの一般化を考慮し、モジュールやオブジェクトクラスを書くことを
+考慮しましょう。
+コードが C<use strict> と C<use warnings> (あるいは B<-w>) が有効でも
+きちんと動くか考慮しましょう。
+コードを捨て去ることも考慮しましょう。
+世界の見方を変えることを考慮しましょう。
+他にも……ああ、もういいや。
+
+=item *
+
+=begin original
+
+Try to document your code and use Pod formatting in a consistent way. Here
+are commonly expected conventions:
+
+=end original
+
+Try to document your code and use Pod formatting in a consistent way. Here
+are commonly expected conventions:
+(TBT)
+
+=over 4
+
+=item *
+
+=begin original
+
+use C<CE<lt>E<gt>> for function, variable and module names (and more
+generally anything that can be considered part of code, like filehandles
+or specific values). Note that function names are considered more readable
+with parentheses after their name, that is C<function()>.
+
+=end original
+
+use C<CE<lt>E<gt>> for function, variable and module names (and more
+generally anything that can be considered part of code, like filehandles
+or specific values). Note that function names are considered more readable
+with parentheses after their name, that is C<function()>.
+(TBT)
+
+=item *
+
+=begin original
+
+use C<BE<lt>E<gt>> for commands names like B<cat> or B<grep>.
+
+=end original
+
+use C<BE<lt>E<gt>> for commands names like B<cat> or B<grep>.
+(TBT)
+
+=item *
+
+=begin original
+
+use C<FE<lt>E<gt>> or C<CE<lt>E<gt>> for file names. C<FE<lt>E<gt>> should
+be the only Pod code for file names, but as most Pod formatters render it
+as italic, Unix and Windows paths with their slashes and backslashes may
+be less readable, and better rendered with C<CE<lt>E<gt>>.
+
+=end original
+
+use C<FE<lt>E<gt>> or C<CE<lt>E<gt>> for file names. C<FE<lt>E<gt>> should
+be the only Pod code for file names, but as most Pod formatters render it
+as italic, Unix and Windows paths with their slashes and backslashes may
+be less readable, and better rendered with C<CE<lt>E<gt>>.
+(TBT)
+
+=back
+
+=item *
+
+=begin original
+
+Be consistent.
+
+=end original
+
+つねに一貫性を。
+
+=item *
+
+=begin original
+
+Be nice.
+
+=end original
+
+つねに素敵に。
+
+=back
+


perldocjp-cvs メーリングリストの案内
Back to archive index