2013-10-29 47 views
0

我沒有幾個方法可以接受固定大小的集合(例如2,3,5)。我不能決定哪種方式更好:傳遞幾個元素到方法

public void Foo(IEnumerable<Object> objects) 
{ 
    if(objects.Count() != 3) 
    { 
     throw new Exception() 
    } 
    // actions 
} 

public void Foo(Object objectA, Object objectB, Object objectC) 
{ 
    // actions 
} 

是否有任何最終+ \ - 每個選項?

回答

7

第二,在我看來好得多:

  • 這是從簽名,它的預計3個值
  • 故障是在編譯時,而不是執行時間
+0

雖然第一種方法可以更靈活 – lordkain

+1

@lordkain所需的集合成員的數量,不那麼靈活,因爲你承擔一個異常ISN」在調用該方法時突出顯示。這是更危險的,這是誤導,因爲「靈活性」是一個誤導 –

2

標記明顯如果有特定數量的成員是必需的,請使用第二個選項。如果允許一個集合,但是在運行時拋出一個異常,那麼你的方法的使用者會感到困惑。如果沒有使用適當的測試並且誤導,這可能會或可能不會被捕獲。總是爲將要使用你的代碼的人設計,永遠不要假設你將永遠是維護它的人。

1

我會去這樣的:

public class Bar 
{ 
    public Object object1; 
    public Object object2; 
    public Object object3; 

    // add a constructor if you want 
} 

... 

public void Foo(Bar b) 
{ 
     // actions 
}