<?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>もしあなたの commit コードが、以下の制約にしたがっていない場合には、
あなたは自身のコードを修正する責任があります。</strong>
</p>

<p>
以下は、Turbuine に特有のコーディング規約のリストで、その他は特に言及しないかぎり
<a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun Java コーディング規約</a>に従います。
</p>

<p>
1.
括弧は新しい行で始まって、終わるべきです。例:
</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 では、この変換は以下のコマンドで行ないます。

(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 ()
  "The Java mode specialization for Apache Jakarta projects."
  (if (not (assoc "apache-jakarta" c-style-alist))
      ;; Define the Apache Jakarta cc-mode style.
      (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")

  ;; Turn on syntax highlighting when X is running.
  (if (boundp 'window-system)
      (progn (setq font-lock-support-mode 'lazy-lock-mode)
             (font-lock-mode t))))

;; Activate Jakarta mode.
(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-:' は &lt;meta&gt; につづけて ':' です。
　スタートアップのデフォルトは ON です。
  </p>
  
  <p>
これは、何もかも含めて Daniel L.Rall による Turbine プロジェクトへの貢献です。
ありがとうダニエル！
  </p>

</section>

</body>
</document>
