[英]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.