建议四 避免带有变长参数的方法重载

《编写高质量代码:改善Java程序的151个建议》之建议四。

学习

重载变长参数的方法的实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Client {
public static void main(String[] args) {
Client client = new Client();
client.calPrice(1000, 75);
}
public void calPrice(int price, int discount){
float knockdownPrice = price * discount / 100.0f;
System.out.println("简单折扣后的价格是:" + formateCurrency(knockdownPrice));
}
public void calPrice(int price, int... discounts){
float knockdownPrice = price;
for(int discount : discounts){
knockdownPrice = knockdownPrice * discount / 100;
}
System.out.println("复杂折扣后的价格是:" + formateCurrency(knockdownPrice));
}
private String formateCurrency(float price){
return NumberFormat.getCurrencyInstance().format(price);
}
}

之所以这么建议,是因为client.calPrice(1000, 75);这种调用方式,编辑器可以从简单版的重载版本查下,人就有点疑惑了。

评论

建议一般,但是学会了变长参数的书写了。