![](/img/trans.png)
[英]What is the cleanest way to unwrap nested JSON values with Jackson in Java?
[英]Cleanest way to rewrite nested if
我有一些這樣的代碼:
public ClassName func(@Nullable ClassName instance){
ClassName returnVal = instance;
if(instance != null){
V1 v = instance.getV();
if(someCondition(v)){
returnVal = null;
}
}
return returnVal;
}
我試圖找到一種方法來寫得很好,嵌套的if
不是那么好。
其次,如果instance
為空,那么當我的意思是returnVal = null
時,執行returnVal = instance
可能會產生誤導,所以這也是一些東西。
第三,如果someCondition(v)
是真的,那么我設置returnVal
為空,這樣也並不理想,因為我設置returnVal = instance
在第一線,如果null
再次然后為空,我也這returnVal = null
,所以它的那種重復?
什么是重寫這個最干凈的方法,為什么?
反轉第一個if
,並測試是否為null
。 然后你只需要一個 or 來測試someCondition
(並且可以返回null
)。 否則,您將返回原始instance
。 消除臨時變量可以使代碼更具可讀性(但應在它們提高可讀性時使用)。 把它放在一起,你可以寫
public ClassName func(@Nullable ClassName instance) {
if (instance == null || someCondition(instance.getV())) {
return null;
}
return instance;
}
如果你想使用 Java Optional 來看看功能性,你可以試試
return Optional.ofNullable(instance)
.filter(instanceValue -> someCondition(instanceValue.getV()))
.orElse(null);
這正是 Elliott Frisch 的回答所說的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.