Java 标志或每个标志可能值的单独方法?
如果您希望在某个点从数组中同时获取负数或正数,那么哪个选项“更好”:Java 标志或每个标志可能值的单独方法?,java,Java,如果您希望在某个点从数组中同时获取负数或正数,那么哪个选项“更好”: getAllNumbers(initialArray,布尔正) .... 或 GetAllPositionEnumbers(initialArray){ .. } GetAllNegativeEnumbers(initialArray){ … } 就个人而言,我会选择GetAllPositionEnumbers。否则,您需要在getAllNumbers中编写一些注释,以使前者立即变得明显 范例 /** *从数组返
getAllNumbers(initialArray,布尔正)
....
或
GetAllPositionEnumbers(initialArray){
..
}
GetAllNegativeEnumbers(initialArray){
…
}
就个人而言,我会选择GetAllPositionEnumbers
。否则,您需要在getAllNumbers
中编写一些注释,以使前者立即变得明显
范例
/**
*从数组返回数字。
*@正布尔值,指示是否仅获取正值。
*
*/
公共列表GetAllNumber(initialArray,布尔正)
{
//一些代码。
}
或
公共列表GetAllPositionEnumbers(int[]数字)
{
//一些代码。
}
正如您所看到的,最后一个是非常明显的功能。如果这是用于库或其他东西,我建议两者都使用。GetAllPositionEnumbers和GetAllNegationEnumbers方法可以调用getAllNumbers方法,如下所示:
public int[] getAllNumbers(int[] array, boolean positive) {
//...
}
public int[] getAllPositiveNumbers(int[] array) {
return getAllNumbers(array, true);
}
否则,请使用您喜欢的方法。我想使用
GetAllPositiveEnumbers
和GetAllNegativeEnumbers
,因为代码更清晰易读,但为客户端提供一种方便的方法可能是合理的
如果客户端代码必须在运行时选择其中一个方法(因为用户输入)。然后,每个客户都必须这样做:
boolean selectPositiveNumber = .....; // obtained somehow through user input
int[] numbers = null;
if(positiveNumbers){
numbers = getAllPositiveNumbers(allNumbers);
} else {
numbers = getAllNegativeNumbers(allNumbers);
}
public int positiveSum(int[] values){
int[] positiveNumbers = getPositiveNumbers(values);
int sum = 0;
// loop to calc the sum
return sum;
}
在这种情况下,方便的方法getAllNumbers(initialArray,boolean-positive)
使客户机代码变得更简单
boolean selectPositiveNumber = .....; // obtained somehow through user input
int[] numbers = getAllNumbers(allNumbers, selectPositiveNumber);
如果客户机代码在“编译时”选择其中一个方法。这样,客户端就不需要方便的方法,例如,客户端代码可能会执行以下操作:
boolean selectPositiveNumber = .....; // obtained somehow through user input
int[] numbers = null;
if(positiveNumbers){
numbers = getAllPositiveNumbers(allNumbers);
} else {
numbers = getAllNegativeNumbers(allNumbers);
}
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
,那么它就提供了一种方便的方法