2

Javaでクラスを作成すると、(ほとんど)常に次のようになります。

public class MyClass {

    // attributes

    // constructors

    // methods:
    //   * "interesting" methods
    //   * getters and setters
    //   * toString / equals / hashCode
}

特に、私は常に最初にすべての属性を書きます。

Javaでクラスを構造化する方法の規則はありますか?

Oracleコード規約で見つかりませんでした。私はJavaの家庭教師であり、「私はそれをそのように学んだので、あなたもこのようにすべきである」以上のことを生徒に提供したいので、ソース(たとえば、 Mozillaコーディングスタイルや本のような他のスタイルガイド)に興味があります。 。また、クラス内で他の構造を提案する理由/ソースがある場合は、それも喜んで知っています。

編集:私はあなたの考えに興味がありますが、私は情報源を期待していることを強調する必要があると思います。個人的な経験は面白いですが、上記の構造が一般的であるという経験もしました。しかし、私は生徒たちに漠然とした印象以上のものを与えたいと思っています。誰もがこの構造を使用しているようです。特に、使用しないものもあります。

4

5 に答える 5

1

より注意深く読む必要があります:セクション3.1.3で書くためにリンクしたOracleコーディング規約:

次の表は、クラスまたはインターフェイス宣言の各部分を、表示される順序で説明しています。コメントを含む例については、19ページの「Javaソースファイルの例」を参照してください。

  1. クラス/インターフェースのドキュメントコメント(/**...*/)

    このコメントの内容については、9ページの「ドキュメントのコメント」を参照してください。

  2. クラスまたはインターフェイスステートメント

  3. クラス/インターフェース実装コメント(/*...*/)、必要に応じて

    このコメントには、クラス/インターフェイスのドキュメントコメントに適さないクラス全体またはインターフェイス全体の情報が含まれている必要があります。

  4. クラス(静的)変数

    最初にパブリッククラス変数、次に保護されたクラス変数、次にプライベートクラス変数。

  5. インスタンス変数

    最初にパブリック、次に保護、次にプライベート。

  6. コンストラクター

  7. メソッド

    これらのメソッドは、スコープやアクセシビリティではなく、機能ごとにグループ化する必要があります。たとえば、プライベートクラスメソッドを2つのパブリックインスタンスメソッドの間に置くことができます。目標は、コードの読み取りと理解を容易にすることです。

とは言うものの、この慣習はかなり古いものであり、通常、細字は従いません。たとえば、フィールドをアクセス可能性で並べ替えるのは奇妙に思えますが、メソッドは機能で並べ替えます。確かに、私はプロのコードでアクセス可能性によって順序付けられたフィールドを見ることはめったにありません。ただし、箇条書きの順序は、プロのコードでは非常に普遍的に守られています。

于 2013-01-20T15:30:12.517 に答える
1

the onlyクラスのソースを整理する方法に慣例はありません。リストした構造は非常に一般的です。最初に属性、次にコンストラクター、次にメソッドです。ただし、一部のチームはクラスの末尾に属性を保持することを好み、一部のチームはフィールド定義をそのセッターおよびゲッターと混合しています。チームは、すべてのソースが同じように見えるようにするために、いくつかの規則について内部的に合意する必要があります。

于 2013-01-20T14:52:52.067 に答える
0

すべての言語と同様に、言語仕様(存在する場合)とチームまたはプロジェクトの地域の慣習以外に信頼できる情報源はありません。Java言語仕様は、メンバーの特定の順序を強制しません。

于 2013-01-20T15:40:40.060 に答える
0

Checkstyle(http://checkstyle.sourceforge.net/)のようなツールを使用できます。

クラス構造のチェックがいくつか含まれています(たとえば、修飾子の順序http://checkstyle.sourceforge.net/config_modifier.html、命名規則http://checkstyle.sourceforge.net/config_naming.htmlなど)。

これは、コーディング規約を提示するための最良の方法ではありません。ただし、実際の利点は、CheckstyleをIDEまたは自動ビルドで直接使用できるため、学生がコードに直接適用されていることを確認できることです。

于 2013-01-20T16:03:09.880 に答える
-1

これをバックアップすることはできませんが、クラスの最初にコンストラクターが続くメンバー変数を宣言することが、すべての言語に適用できる唯一の「規則」であると思います。引用符を使用するのは、それがオブジェクト定義に引用符を配置する唯一の論理的な方法であるかのように自然に行われるためです(C ++スタイルの角かっこなどとは異なります)。

于 2013-01-20T14:58:45.777 に答える