如果你想从某个数组得到负数或正数,那么哪个选项会“更好”:
getAllNumbers(initialArray, boolean positive)
....
要么
getAllPositiveNumbers(initialArray){
....
}
getAllNegativeNumbers(initialArray){
...
}
答案 0 :(得分:1)
我想使用getAllPositiveNumbers
和getAllNegativeNumbers
,因为代码更清晰易读,但为客户提供便捷方法可能是合理的。
如果客户端代码必须在运行时选择其中一个方法(因为用户输入)。然后每个客户都必须这样做:
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;
}
幸运的是,您可以将两者结合起来:
public int[] getAllNumbers(int[] nums, boolean onlyPositiveNums){
if(onlyPositiveNums){
return getAllPositiveNumbers(nums);
} else {
return getAllNegativeNumbers(nums);
}
}
因此,如果您期望许多客户端代码执行if/else
而不是提供便利方法。
答案 1 :(得分: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.
}
正如你所看到的,最后一个很明显它的作用。
答案 2 :(得分:0)
如果是图书馆或其他什么,我建议同时使用它们。 getAllPositiveNumbers和getAllNegativeNumbers方法可以调用getAllNumbers方法,如下所示:
public int[] getAllNumbers(int[] array, boolean positive) {
//...
}
public int[] getAllPositiveNumbers(int[] array) {
return getAllNumbers(array, true);
}
否则请使用您喜欢的任何一种。