<?xml version="1.0" encoding="Shift_JIS"?>

<document>

 <properties>
  <title>Coding Standards</title>
  <author email="jvanzyl@locus.apache.org">Velocity Documentation Team</author>
  <translator>熊坂祐二</translator>
  <original>code-standards</original>
 </properties>

<body>

<section name="コーディング標準">

<p>
このドキュメントでは、プロジェクトに対してコードを提出するのに必要な、
コーディング規約のリストについて説明しています。
たいていのオープンソースプロジェクトのコーディング規約は、
デフォルトでは、あなたが取り組んでいるコードにある、
既存のコーディング規約に従うべきです。
例えば、if 文と同じ行に括弧がある場合には、
あなたは全てその規約にしたがってあなたのコードを書くべきです。
</p>

<p>
<strong>もし、これらの制約にしたがっていないコードをコミットしたら、
責任をもって自分のコードを修正しなければなりません。</strong>
</p>

<p>
以下は、Velocity 固有のコーディング規約のリストで、その他は特に言及しないかぎり
<a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun Java コーディング規約</a>に従います。
</p>

<p>
1.
括弧の開始・終了は新しい行で行います。<br/>
例:
</p>
<source test=""><![CDATA[

if ( foo )
{
    // code here
}

try
{
    // code here
}
catch (Exception bar)
{
    // code here
}
finally
{
    // code here
}

while ( true )
{
    // code here
}

]]></source>

<p>
2. 括弧の間にスペースをいれるのは <strong>OK</strong> です。
ただし、スペースが入れない方が望ましいです。
例えば、これらは両方とも、OK です：
</p>

<source test=""><![CDATA[

if (foo)

or

if ( foo )

]]></source>

<p>
3. (インデントは)4つのスペースで。タブは<strong>ダメです</strong>。以上。
多くの人がタブを使いたがるのは理解していますが、実際問題として、
分散開発環境では、タブを使用していると、
cvs コミットメッセージがメーリングリストに送られた時に、
コミットメッセージがほとんど読めません。
</p>

<p>
Emacs では、以下のコマンドで変換を行えます。
<br/>
(setq-default tab-width 4 indent-tabs-mode nil)

</p>

<p>
4. .java ソースコードファイルは全て、Unix 改行コードを使用します。
その他のプラットフォーム固有のファイルでは、
プラットフォーム固有の改行を使用します。
</p>

<p>
5. すべてのメソッドにjavadocがなければ<strong>なりません</strong>。
また、既存のコードで作業をしていて、javadoc
が無いようなメソッド/クラス/変数などを見つけたら追加してください。
こうしたことで、プロジェクトが全体として改善されます。
</p>

<p>
6. <a href="license.html">Apache Software License</a> は、
すべてのファイルの先頭に挿入しなければ<strong>なりません</strong>。
</p>

<p>
7. ファイル(コードやドキュメント)に貢献していただいたら、
自分の名前をファイルの先頭に追加してください。
java ファイルでは、望ましいJavadoc 形式は以下の通りです。
</p>

<source><![CDATA[
@author <a href="mailto:user@domain.com">John Doe</a>
]]></source>

<p>
ご協力をお願いします。
</p>

</section>

<section name="Emacsの便利ツール">

<p>
コーディングを簡単にするために、以下のちょっとした Emacs LISP で、
括弧づけについて、「正しく」行うことができます。
 </p>
<source><![CDATA[
(defun apache-jakarta-mode ()
  "Apache Jakartaプロジェクト向けJavaモード特殊化"
  (if (not (assoc "apache-jakarta" c-style-alist))
      ;; Apache Jakarta cc-mode スタイルを定義。
      (c-add-style "apache-jakarta" '("java" (indent-tabs-mode . nil))))

  (c-set-style "apache-jakarta")
  (c-set-offset 'substatement-open 0 nil)
  (setq mode-name "Apache Jakarta")

  ;; Xウィンドウだったら、シンタックスハイライトをONにする。
  (if (boundp 'window-system)
      (progn (setq font-lock-support-mode 'lazy-lock-mode)
             (font-lock-mode t))))

;; Jakartaモードを有効にする。
(if (fboundp 'jde-mode)
    (add-hook 'jde-mode-hook 'apache-jakarta-mode)
  (add-hook 'java-mode-hook 'apache-jakarta-mode))
]]></source>

  <p>
  注意: これは、emacs ですべての java に適用されます。
  制御するためには、以下のようにします。

  <ul>
  <li>
     オフ : <code>M-: (remove-hook 'java-mode 'apache-jakarta-mode)</code>
  </li>
  <li>
     オン : <code>M-: (add-hook 'java-mode 'apache-jakarta-mode)</code>
  </li>
  </ul>

もちろん 'M-:' はメタキーを押しながら':'を押すことを示します。
スタートアップ時のデフォルトは ON です。
  </p>
  
  <p>
ここの内容はすべて、Daniel L.Rall が Turbine
プロジェクトに貢献してくれたものを使わせてもらいました。
ありがとうダニエル！
  </p>

</section>

</body>
</document>
