元件提供的方法應單一 簡單且不失全面

2021-06-25 09:36:24 字數 642 閱讀 8394

乙個專用元件該提供什麼樣的方法?功能強大、全面但複雜的方法?還是功能單

一、粒度適當的基本方法?

我會選擇後者。看看下面的例子吧~~~o(∩_∩)o~~

使用者id聯想的方法由 icpebi.dll 提供,此元件的介面提供了

stdmethodimp chrbaseinfo::query(bstr bstrkey, bstr* pbstrresults);

方法,此方法返回的是查詢到的xml,這是個基本、單一的方法。有沒有必要將xml中的資訊在 query 中提取出來再返回呢?完全沒必要,資訊的表現形式千萬種,以何種方式來表現,還是讓使用者自己去提取;若提取,反而把功能做的更死。

使用者id還涉及到驗證,而且是很常用的功能。是否把驗證功能作為 icpebi.dll 的方法來提供,是值得思量的問題,因為借助 query 在元件外部也能進行驗證。對我來說,很難拿捏。於是把跟使用者id有關的動詞都提取出來,「查詢」、「驗證」、「修復」,驗證和查詢屬同一粒度,所以作為方法提供是可以的。

驗證乙個使用者id是必須的,有沒有必要提供驗證多個使用者id的方法呢?要想提供此方法,有點複雜。多個使用者id驗證,其結果有多種可能性,此方法的結果複雜性,讓其不宜做為方法。借助單一的使用者id驗證反而簡單些,因此不提供。

總之,元件的方法要單

一、簡單且不失全面性。

string,array的屬性和方法簡單一覽

array 屬性方法一覽 array.reverse 陣列反向排序,變成新陣列。array.sort 把陣列按字元排序,變成新陣列。s array.push str1 str2 從後面新增陣列,s為新增記錄 s array.pop 從後面刪除陣列,s為被刪記錄 s array.shift 從前面刪除...

string,array的屬性和方法簡單一覽

array.reverse 陣列反向排序,變成新陣列。array.sort 把陣列按字元排序,變成新陣列。s array.push str1 str2 從後面新增陣列,s為新增記錄 s array.pop 從後面刪除陣列,s為被刪記錄 s array.shift 從前面刪除陣列,s為被刪記錄 s a...

盡量寫功能單一的方法

乙個方法只做一件事,且僅僅只做一件事,使乙個方法成為最小的乙個單元。這樣能提高方法的原子行 不可再分 提高方法的靈活性。如果乙個方法中包含了多個 功能,且多個功能相互依賴,這樣提高了 的耦合度,不利於維護。乙個方法具有多個功能,別人在使用這個方法時,僅僅只想用其中的乙個功能,也就是 一部分 然而還不...