2012-05-11 31 views
2

我的老闆堅持以下規則:所有傳遞給構造函數的變量都應該通過一個只讀屬性來提供。應該將變量傳遞給構造函數作爲屬性嗎?

我不明白爲什麼這應該是真實的,因爲班級應該這樣做,它應該這樣做,而不是爲他人提供他們的結構。我明白,有時它很有用,但這不是一般規則。

我的想法是否正確?我錯過了什麼嗎?任何人都可以添加更多的論據或反對嗎?規則的

例子:

public class MyClass 
{ 
     public MyClass(ISomeProvider someProvider) 
     { 
      SomeProvider = someProvider; 
     } 
     public ISomeProvider SomeProvider { get; private set; } 
     public void DoSomeWork() 
     { 
      ... 
     } 
} 

謝謝。

+10

如果它不*服務於一個明確的目的*,我會懷疑下面**像 –

+1

任何**規則的限制有沒有測試框架的好處? – Servy

回答

7

個人我會說不......我從來不相信有一條規則適合所有人。如果這些參數是在內部使用的,那麼就不需要暴露它們。

如果您將「原始」字符串密碼傳遞給加密類,則不會期望原始字符串在對象的整個生命週期內都可訪問,實際上這樣做可能會帶來安全風險。

另一方面,有時你必須遵循團隊/經理制定的標準。如果你認爲這個原理是錯誤的,那麼就詳細討論這個想法的論點。

1

可能在某些特定項目的某些特定部分(應該說,聽起來很奇怪的設計,但是..),但是它永遠不可能是軟件設計中的通用規則在一個單一項目的領域。

1

由老闆決定的規則可以幫助調試以瞭解對象的屬性。這不是一條規則,您可以將其視爲項目經理創建的設計模式。

public class MyClass 
{ 
    private ISomeProvider someProvider; 

    public ISomeProvider SomeProvider 
    { 
     get 
     { 
      //logic here 
      return this._someProvider; 
     } 
    } 

    public MyClass(ISomeProvider someProvider) 
    { 
     this._someProvider = someProvider; 
    } 

    public void DoSomeWork() 
    { 

    } 
} 
+0

我確定這是一種設計模式 – abatishchev

相關問題