類方法呼叫設計為類屬性還是傳參好?

2022-03-14 04:44:06 字數 1079 閱讀 9877

1.從封裝角度看。這樣的方法簽名,表達能力不強,沒交代清楚輸入,呼叫者需要了解被呼叫**細節,才能知道需要給哪些屬性賦值。如果不同程式集,不同人員一同開發會有不小溝通障礙,一旦被呼叫方法引數有變要通知呼叫方,否則可能出現bug。

2.從介面角度看。基於第一點,很難形成介面,因為介面功能之一是定義輸入輸出的規範。

3.從維護角度看。

首先,**是你自己寫的,自然覺得問題不大,但是如果別人來做**的維護,單看呼叫不看被呼叫方法的**細節,確實不知道怎麼改。其次,如果被呼叫方法所需引數數量發生變化時,那麼呼叫**的物件例項的屬性需要相應的新增和修改,這個做不到自動重構,需要查詢引用,然後手工乙個個改,可能存在漏改;如果不改,多餘的屬性賦值顯然會影響以後閱讀。如果是指明引數個數和型別,起碼編譯的時候可以報錯。

4.從隱藏bug角度看。基於第三點,如果被呼叫方法體內部對引數使用個數等的修改,然後,呼叫沒有同步修改,可能隱含造成bug(方法體新增引數的時候,呼叫沒有同步新增屬性的賦值)。

5.從泛型程式設計角度看。這樣子的設計,難用泛型來程式設計,因為你需要給具體型別的具體屬性賦值後才呼叫方法。

如果按照這樣的思路,我一般更傾向於使用實體類作為引數。例如:

//以下dao

public idaowhere tentity : entitiebase, new()

public abstract class daobase: idao

where tentity : entitiebase, new()

where tdatacontext : dbcontext, new()

}add(tentity)

}public class daouser : daobase

//以下bo

public abstract class bobase

where tentity : entitiebase

where tidao : idao

private tidao dao;

public tidao dao

add(tentity)

}public class bouser : bobase

>

來自為知筆記(wiz)

類屬性與類方法

一 屬性 盡量把需要使用者傳入的屬性作為例項屬性,而把同類都一樣的屬性作為類屬性。例項屬性在每創造乙個例項時都會初始化一遍,不同的例項的例項屬性可能不同,不同例項的類屬性都相同。從而減少記憶體。1 例項屬性 最好在 init self,中初始化 內部呼叫時都需要加上self.外部呼叫時用instan...

類屬性和類方法

當乙個屬性 方法被static修飾的時候,就叫做類屬性 類方法,又叫做靜態屬性 靜態方法 沒有被static修飾的屬性,就叫物件屬性 物件方法,又叫例項屬性 例項方法和非靜態屬性 非靜態方法。當乙個屬性被宣告成類屬性,那麼所有的物件,都共享乙個值,所有物件都可以修改這個值,一經修改前面的值將會被丟棄...

類屬性和類方法

使用面相物件開發,第 1 步是設計類使用類名 建立物件,建立物件的動作有兩步 物件建立後,記憶體中就有了乙個物件的實實在在的存在 例項 因此,通常也會把 建立出來的物件叫做類的例項建立物件的動作叫做例項化物件的屬性叫做例項屬性物件呼叫的方法叫做例項方法 在程式執行時 物件各自擁有自己的例項屬性呼叫物...