2013-09-27 87 views
0

讓我們假設一個逐步代碼逐步驗證碼清理

stepWise() { 
    Object a = getA(); 
    Object b = getB (a); 
    Object c = getC (b); 
} 

如果這樣的代碼,我需要添加驗證,我需要對建議做清潔的方式。

stepWise() { 
    Object a = getA(); 
    if (a!= null) { 
    Object b = getB(a); 
    if (b! = null) { 
     Object c = getC(c); 
    } 
    } 
} 

現在唯一的問題是更多的序列如果添加(getD(),getE()等)將創建更多的混亂。

  1. 任何干淨的解決方案?

  2. 或者我應該只驗證各個函數中的參數是否爲非空?

+1

也許你應該選擇2. –

+0

使用任何形式的流水線,命令模式等。每個步驟由一個接口實例表示。 –

回答

0

考慮使用Null Object設計模式作爲替代方案,以避免必須執行所有這些檢查。

這也不清楚爲什麼你:

getB(a) 

,而不是:

a.getB(); 

本來我想你可能只是這樣做:

stepWise() { 
    Object a = getA(); 
    Object b = getB(); 
    Object c = getC(); 

    checkNotNull(a); 
    checkNotNull(b); 
    checkNotNull(c); 
    ... 

但你設計你的課程的方式,這是不可能的。

+0

class Tree {findInoderSuccessor(int x){Node n = nodeForX(x);節點successorNode = inorder(n); return n.item}; – JavaDeveloper

+0

恩,你在評論中提及什麼? –

+0

你不清楚爲什麼我不能做a.getB(),在這種情況下我不能這樣做node.getInorder(); – JavaDeveloper