3

varargsオプションパラメータのメソッドで使用しています。メソッドを文書化するための最良の方法について何か提案はありますか?

これは素晴らしく考案された例です:

/**
*
* @param consumption
*     liters of liquid consumed after last pee
* @param options
*   urgency
*       how badly you have to pee on a scale of 1-3,
*       3 being the highest (default 1)
*   bribe
*       what's a toilet worth to you? (default 0)
* @return waitTime
*    minutes until you'll be able to relieve yourself
*/
public integer whenCanIUseTheBathroom(int consumption, int... options){
    // Segment handling options, defining defaults/fallbacks
    int urgency = 1;
    int bribe = 0;
    if(options.length > 0) {
        urgency = options[0];
    }
    if(options.length == 2) {
        bribe = options[1];
    }

    // Segment determining one's fate
    ...
}
4

1 に答える 1

2

Varargsは通常、「サブパラメーター」のさまざまなタイプをサポートせず、リファクタリングのサポートが不十分であり(新しい「サブパラメーター」を挿入するか、古いサブパラメーターを削除するか)、柔軟性がないため、さまざまな意味を持つオプションのパラメーターを実装するために使用されません( 「賄賂」を提供する際に「緊急性」を省略することはできません)。したがって、javadocを使用してそれらを文書化する標準的な方法もありません。

オプションのパラメーターは通常、オーバーロード(通常は委任を使用)またはビルダーパターンのバリアントを使用して実装されます。これにより、次のように記述できます。

new BathroomRequest(3).withBribe(2).compute();

このアプローチの詳細については、JoshuaBlochのEffectiveJavaのアイテム2を参照してください。

于 2012-09-10T05:22:05.703 に答える