2017-05-04 11 views
1

私はAppConfigクラスのライブラリを持っています。javadocのデフォルト値

AppConfigのデフォルト値をこのライブラリを使用して他の開発者に知らせるにはどうすればよいでしょうか?私が持っている

ひとつのアイデアは、javadocのそれを言及するために、このようなものです:

public class AppConfig { 
    private int someSetting = 50; 

    /** 
    * This setting does something. 
    * 
    * @default 50 
    */ 
    public int setSomeSetting(int someSetting){ 
     this.someSetting = someSetting; 
    } 
} 

しかし、このシナリオのための実際のベストプラクティスは何ですか?

+0

そうのようないくつかの定数を作成する方が良いでしょう: 'のpublic static final int型のDEFAULT_SETTING = 50;'それを初期化するために、 '、そして' someSetting = DEFAULT_SETTING持っています。 そのようにすれば、デフォルトが何であるか、そしてなぜその特定の値に設定されているのかがはっきりと分かります。 –

+0

@ patrick-haingeこれはデフォルトが何であるかを明確にするかもしれませんが、どうしてそれがその値に設定されているのかはっきりしていますか? – user2015253

+0

なぜ 'x = 50'を見るのではなく、なぜ' x'が '50'で始まるのかを知るためにドキュメンテーションやコメントを見なければならないのではなく、' x = THE_DEFAULT_VALUE'どうしたの。 –

答えて

2

正しい(私は@defaultが実際にサポートされたタグではないと信じていたように)。そのような注釈はありません。

そこから:これは「純粋なスタイル」のみです。意味:javadocは大丈夫です - あなたは何でもあなたのために働きます。このクラスを使用するあなたの周りの人々のチームです。しかし

本当にトリッキーな質問:情報のその部分を入れて!あなたが見る:クラスsetSomeSetting()のユーザー...あなたがすでにに適用されている場合、デフォルト値が適用されます。

つまり、コンストラクタ内でこれらのデフォルトを使用している可能性があります。だから、あなたはむしろそれらのデフォルトについて "class javadoc"のユーザ権限を伝えるべきです。おそらくその価値観。

などは:

/** 
* ... Provides properties x, y,z; with defaults 50, 100, 150 
*/ 
public class Foo { 
    public final int BAR_DEFAULT = 50; 
    private int bar = BAR_DEFAULT; 

    public void setBar(int newBar) { bar = newBar; } 
+0

私は2つのセントを「_その情報を入れる場所」と付け加えるだけです。これはセッターの代わりにゲッターに入れられるべきである/そうでなければならないことです。我々はそれを更新するときの価値は何であっても気にしない。そして、もちろん、定数を使うことは、javadocで(アクセスに基づいて)見ることができるので、はっきりしているでしょう。 – AxelH

+0

@GhostCat Configクラスに20または50の変数があるとどうなりますか?これらのデフォルト値をすべてjavadocクラスにリストする必要がありますか? – user2015253

+0

@AxelHより正確で直感的なようです。しかし、この場合、このライブラリを使用している開発者は、ライブラリにconfigを渡しています。ライブラリを除いて誰もgetterを呼び出すことはありません。 このライブラリを使用している開発者は通常、AppConfigオブジェクトを作成し、いくつかの値を変更してライブラリに渡してライブラリを使用します。 – user2015253