2010-05-14 52 views
1

我有以下簽名的方法:foo(樣本樣本,等分樣本)什麼模式用於多參數方法?

「foo」需要更改一個Sample對象,無論是第一個參數還是第二個參數,它都可以提取其Sample。例如:

foo (Sample sample, Aliquot aliquot) { 
    Sample out = null; 
    if (sample != null) 
     out = sample 
    else 
     out = aliquot.getSample() 

    return out; 
} 

但就是這樣比閱讀API開發人員不知道第一個參數的參考聯合國優雅,其他覆蓋第二個參數的樣品。現在

,我可以改變「富」爲foo(SomeMagicalObject條),其中SomeMagicalObject是樣品和分裝的元組,並擁有一些邏輯...等

但我想知道,是否有一些模式的這個問題?

回答

2

我要麼將其更改爲foo(Sample sample),使主叫方傳遞一個樣本對象,或者將其更改爲foo(Aliquot aliquot),使主叫方設置的分裝樣品。

你說得對,如果你同時允許這兩種方式,調用者將會困惑到需要哪一個。刪除未知數並強制呼叫者以某種方式執行此操作。

+0

如果該方法操縱一個'Sample',那麼傳入一個'Aliquot'並沒有多大意義。建議'foo(Sample)'是更好的方法。如果需要,調用者總是可以使用'foo(aliquot.getSample())'。 – msandiford 2010-05-14 00:55:50

+0

是的,我同意。他給出的例子非常微不足道,我認爲該方法可能對Sample或Aliquot做了其他的事情。 – 2010-05-14 00:59:48

0
sample.foo(aliquot); 
0

取決於大局觀是什麼,但如果你不控制採樣對象,你可以永遠只是做這沒有一個方法:

樣品富=(!樣本= NULL)?示例:aliquot.getSample();

相關問題