gpt4 book ai didi

java - 减少代码重复

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:39 25 4
gpt4 key购买 nike

我目前有多个这样的代码用于不同的浇头

// Toppings - Egg
System.out.print("Do you want " + egg.getType() + "?");
input = keyboard.nextLine();
choice = input.charAt(0);
if (choice == 'y') {
l.add(egg.getType());
c.add((double) egg.getCost());
numberOfToppings = numberOfToppings + 1;
totalToppingPrice = totalToppingPrice + egg.getCost();
toppings = toppings + "Egg";
}

它工作正常,但我希望我可以在一个代码块中完成所有浇头。因为我有大约 5 个这样的,而且它占用了太多,我被建议这样做。任何人都知道如何做到这一点?谢谢

最佳答案

所有的浇头都应该聚集在一个枚举中,只要浇头集是封闭的并且在程序执行期间不能改变。

enum Topping{
EGG("egg", 22),... ;
private String type;
private double cost;

private Topping(String type, double cost){
this.type = type;
this.cost = cost;
}
//getters and setters

}

然后,您可以在包含上述代码的类中编写一个方法,该方法应该能够处理 Topping 实例,如下所示:

private handleTopping(Topping top){
System.out.print("Do you want "+top.getType() +"?");
input = keyboard.nextLine();
choice = input.charAt(0);
if (choice == 'y'){
l.add(top.getType());
c.add(top.getCost());
numberOfToppings = numberOfToppings + 1;
totalToppingPrice = totalToppingPrice + top.getCost();
toppings = toppings + " " + top.getType();
}
}

最后,调用所有可用浇头的方法

for(Topping top : topping.values()){
handleTopping(top);
}

一切都是关于 DRY(不要重复自己的原则)。它甚至不一定与面向对象的范例联系在一起。即使在过程编程中,核心原则之一也是将常用和常用的功能提取到参数化过程中。

关于java - 减少代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20375744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com