2014-01-30 38 views
0

如果你想在某個時候得到一個數組,其中選擇將是「更好」的消極或積極的數字:
getAllNumbers(initialArray, boolean positive) ....

getAllPositiveNumbers(initialArray){
....
}
getAllNegativeNumbers(initialArray){
...
}
爲每個標誌可能的值標誌或單獨的方法?

+0

定義「更好」。 –

回答

1

我想使用getAllPositiveNumbersgetAllNegativeNumbers,因爲代碼更清晰可讀,但爲客戶提供一種方便的方法可能是合理的。

如果客戶端代碼必須在運行時選擇其中一種方法(由於用戶輸入)。然後,每個客戶端都必須做這樣的事情:

boolean selectPositiveNumber = .....; // obtained somehow through user input 
int[] numbers = null; 
if(positiveNumbers){ 
    numbers = getAllPositiveNumbers(allNumbers); 
} else { 
    numbers = getAllNegativeNumbers(allNumbers); 
} 

在這種情況下,簡便方法getAllNumbers(initialArray, boolean positive)使得客戶端代碼更容易。

boolean selectPositiveNumber = .....; // obtained somehow through user input 
int[] numbers = getAllNumbers(allNumbers, selectPositiveNumber); 

如果客戶端代碼在「編譯時間」選擇其中一種方法。然後客戶不需要一種方便的方法,例如客戶端代碼可能會做這樣的事情:

public int positiveSum(int[] values){ 
    int[] positiveNumbers = getPositiveNumbers(values); 

    int sum = 0; 
    // loop to calc the sum 
    return sum; 
} 

幸運的,你可以結合兩種:

因此,如果你希望有很多的客戶端代碼做一個if/else不是提供一個方便的方法。

0

就個人而言,我會去getAllPositiveNumbers。否則,你需要在getAllNumbers中寫出一些公平的評論,以使前者顯而易見。

/** 
* Returns numbers from an array. 
* @positive boolean value indicating to get just positive values or not. 
* 
*/ 
public List<Integer> getAllNumbers(initialArray, boolean positive) 
{ 
    // Some code. 
} 

或者

public List<Integer> getAllPositiveNumbers(int[] numbers) 
{ 
    // Some code. 
} 

正如你所看到的,最後一個是很明顯它做什麼。

0

如果這是一個庫或東西,我建議使用兩者。該getAllPositiveNumbers和getAllNegativeNumbers方法可以調用getAllNumbers方法,像這樣:

public int[] getAllNumbers(int[] array, boolean positive) { 
    //... 
} 

public int[] getAllPositiveNumbers(int[] array) { 
    return getAllNumbers(array, true); 
} 

否則,使用你喜歡哪個。