敏捷開發中要慎用繼承

2022-03-19 08:35:00 字數 1676 閱讀 7568

participantsindb繼承了來自dbtable的方法,比如clear和getcount。對於participantsindb來講,clear這個方法的確是有用的:清空所有的參會者。但getcount就造成了一點點小意外了:通過participantsindb呼叫getcount這個方法時,是取得participants這個表裡面所有的記錄,不管刪除標記是true還是false的。而實際上,沒人想知道這個資料。即使有人想知道,這個方法也不應該叫做getcount,因為這名字很容易就會跟「計算所有的(有效)參會者數量」聯絡在一起。

因此,participantsindb是不是真的應該繼承這個方法getcount呢?或者我們應該怎麼做比較恰當呢?

它們之間是否真的有繼承關係?

當我們繼承了一些我們不想要的東西,我們應該再三的想想:它們之間是不是真的有繼承關係?participantsindb必須是乙個dbtable嗎?participantsindb希不希望別人知道它是乙個dbtable?

實際上,participantsindb描述的是系統中所有的參會者的集合,該系統可以是個單資料庫的,也可以是多資料庫的,也就是說,這個類可以代表乙個資料庫裡的乙個participants表,也可以代表兩個資料庫各自的兩個participants表的總和。

如果還不清楚的話,我們就這樣舉例吧,比如,現在我們已經有了2000個參會者,在兩個資料庫中存放,其中資料庫a的participants表裡面存放了1000個參會者,資料庫b的participants這個表存放了1000個參會者。dbtable頂多只能描述乙個資料庫裡面的一張表,也就是1000個參會者,而participants則可以完全的描述這2023年參會者的資訊。前面可以當作資料庫的資料表在系統中的代表,而後者表示的應該包含更多業務邏輯的乙個域物件。(原諒這邊我只能用域物件這樣的詞來斷開這樣的混淆。)

因此,我們可以判斷,participantsindb跟dbtable之間不應該有什麼繼承的關係。participantsindb不能繼承dbtable這個類了。於是,現在participantsindb也沒有getcount這個方法了。可是participantsindb還需要dbtable類裡面的其他方法啊,那怎麼辦?所以現在我們讓participantsindb裡面引用了乙個dbtable:

public class dbtable public void clear() finally } public int getcount() finally

} public string gettablename()

public connection getconn()

} public class participantsindb

public void addparticipant(participant part)

public void deleteparticipant(string participantid)

public void restoreparticipant(string participantid)

private void setdeleteflag(string participantid, boolean b)

public void reallydelete() finally

} public void clear()

public int countparticipants() finally } }

唐月華

敏捷開發 敏捷開發中的質量

有小夥伴就問,我們都敏捷了,我們是在效率和質量中找平衡,說敏捷開發中的質量是不容易控制的,要回答這個問題,我設計了乙個faq,內容如下 敏捷開發是什麼?敏捷開發是以需求為中心,以交付價值為目的,持續增量交付的一種軟體開發方法,至於什麼是敏捷,就去問問度娘吧。對於敏捷團隊來說,是乙個自組織的,有集體目...

敏捷開發中的Code Review

itpub個人空間 v2bu j u y.sy a itpub個人空間 r0y f v j k,l v itpub個人空間ftd ky j5 a i 0 文 陳序明 黃彥軍 敏捷開 發中code review的目的及內容 做任何事情,首先要清晰為什麼要做,才能有目標和動力把事情做得更好,code r...

遊戲開發中敏捷實施

兩個程式設計師的 msn log a 說 2008 09 17 11 23 20 對了,問個咚咚,你們那邊是用scrum 麼?b 說 2008 09 17 11 23 26 對 a 說 2008 09 17 11 26 36 你們也是每天morning meeting 羅?a 說 2008 09 1...