2016-12-19 7 views
3

「FALSE」に評価してはならない、私はソナー違反を取得しています:ソナーエラー条件が無条件に「TRUE」または

「TRUE 『または『』FALSE」の条件は無条件に評価するべきではありません』

のコードは次のとおりです。 2以下

List<MediaContent> savedList = source.getChildMediaContents(); 
List<MediaContent> supplierList = target.getChildMediaContents(); 

// if existing and incoming both empty 
if(savedList == null && supplierList == null){ 
    return false; 
} 

// if one is null and other is not then update is required 
if(savedList == null && supplierList != null){ 
    return true; 
} 

if(savedList != null && supplierList == null){ 
    return true; 
} 

到達したときの条件supplierList != nullは常に真でエラーに

// if one is null and other is not then update is required 
if(savedList == null && supplierList != null){ 
    return true; 
} 

if(savedList != null && supplierList == null){ 
    return true; 
} 

答えて

4
if(savedList == null && supplierList == null){ 
    return false; 
} 

if(savedList == null && supplierList != null){ 

を与えているブロック場合。 Javaの&&オペレータの短絡動作により、 より前にsupplierList != nullに達すると、先に savedList == nullが真でなければなりません。

しかしsavedList == nullがtrueの場合、 はその後、我々はsupplierListnullないので、それは無意味状態だと、前の状態から知っています。一方

savedList == nullがfalseの場合、短絡動作に続いによる 、 supplierList != nullが評価されることはありません。したがって、関係なく、savedList == nullの結果に、 supplierList != nullが評価されることはありません

、 ますので、単純にその条件を削除することができます。

if (savedList == null) { 
    return true; 
} 

次へ:

if(savedList != null && supplierList == null){ 

以前の簡素化のおかげで、今ではsavedListnullすることができないことは明らかです。だから我々は、あまりにもその条件を削除することができます。

要するに
if (supplierList == null) { 
    return true; 
} 

、これはあなたの投稿のコードと同等です:あなた上記の条件であれば次の二つを避け、他のケースを持っているに基づいて

if (savedList == null && supplierList == null) { 
    return false; 
} 

if (savedList == null || supplierList == null) { 
    return true; 
} 
+0

最後の2つのif節を 'if(savedList == null ||)にマージすることもできます。 supplierList == null)return true' –

+0

ありがとう@ChristianLutz、良いアイデア、更新 – janos

0

if(savedList == null && supplierList == null){ 
    return false; 
} else { 
    return true; // either savedList or supplierList is not null 
} 

か、単純にすべてのif文

を削除するreturn文を持つことができます