gpt4 book ai didi

Java:将 if-return 语句封装在方法调用中以获得更干净、更简洁的代码?

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:42 25 4
gpt4 key购买 nike

我正在学习 Java 并学习有关代码设计的书籍。

我想知道,Java 中是否可以将 if 语句封装在方法调用中,允许在 boolean 为 false 时以某种方式退出父方法?

我想知道是否可以进一步提炼以下代码

public void addStock (String stock) {

boolean stockNameIsValid = testStringForValidStockName(stock);
if (stockNameIsValid == false){
JOptionPane.showMessageDialog(getParent(), "Invalid text entered. Stock ticker names may only include upper-case alphabetical letters.", "Invalid Text Entry Error", JOptionPane.ERROR_MESSAGE);
return;
}

boolean stockAlreadyExistsInPanel = testForStockExistenceInListingPanel(stock);
if(stockAlreadyExistsInPanel == true){
JOptionPane.showMessageDialog(getParent(), "The same stock cannot be entered twice into the list of stocks being watched.", "Redundant Stock Error", JOptionPane.ERROR_MESSAGE);
return;
}

controller.addStockToDb(stock);

}

变成类似的东西

public void addStock(String stock){
giveErrorAndReturnIfStockNameInvalid(stock);
giveErrorAndReturnIfStockCannotBeFound(stock);
controller.addStockToDb(stock);
}

我想知道这样做是否可行,因为我的 IDE 无法进一步提取上面的代码,并且以上面的第二种方式构建我的代码,我认为可以更好地传达意图,并且比初始示例具有更高的抽象级别。

我有这个想法是因为我目前正在阅读鲍勃叔叔的“干净代码”一书,里面说方法最终应该尽可能短。如果我将较低级别的逻辑封装在方法调用中,那么它会使代码反射(reflect)较高级别的逻辑。这使得代码更容易理解,因为它需要开发人员更少的脑力资源来获得代码每个部分的一般概念。

我的目标是让读者不必实际分析此处代码的实现细节,除非绝对必要。因此,读者不必阅读整个方法来理解它,而是可以获得代码逻辑的更抽象表示。

最佳答案

我们必须使用异常,下面的伪代码解释了相同的内容:

public void addStock(String stock){
try {
isStockNameValid(stock);
isStockExists(stock);
controller.addStockToDb(stock);
} catch(IllegalArgumentException exe) {

}
}

public boolean isStockNameValid(stock) throws IllegalArgumentException {
//check stock name is valid, if not
throw new IllegalArgumentException("Stock Name already exists");
}

public boolean isStockExists(stock) throws IllegalArgumentException {
//check stock exists, if not
throw new IllegalArgumentException("Stock Name already exists");
}

关于Java:将 if-return 语句封装在方法调用中以获得更干净、更简洁的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32688880/

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