簡體   English   中英

重構 If 語句以獲得更好的可讀性

[英]Refactoring If Statements For Better Readability

我目前正在開展一個項目,該項目將減少其他幾個班級正在使用的班級。

if(condition_A)
{
     doSomething();
}
else if(condition_B)
{
     classToBeRemoved();
}
else
{
     doAnother();
}

我想到的第一個解決方案是否定將被修改的 if-else 語句的條件。

if(condition_A)
{
     doSomething();
}
else if(!condition_B)
{
     doAnother();
}

這種重構方法不會影響代碼的功能,但有時條件過長會影響代碼的可讀性。

除了否定條件之外,還有其他方法可以保持代碼的可讀性嗎?

也許有函數,隱約像:

List<BooleanSupplier> actions = new ArrayList<>();
actions.add(() -> {
    if (!condition_A) {
        return false;
    }
    doSomething();
    return true;
});
actions.add(this::canDoSomething);

if (!actions.stream().anyMatch(p::get)) {
    doAnother();
}

我冒昧地將條件+動作抽象為謂詞,而不是使用 Pair 之類的。

這更丑陋,但可以解耦事物,因為現在 add 可以來自類外部,定義一個public void addAction(BooleanSupplier action)

盡管可能需要一個參數來提供數據上下文( Predicate<?> )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM