一个专用组件该提供什么样的方法?功能强大、全面但复杂的方法?还是功能单一、粒度适当的基本方法?
我会选择后者。看看下面的例子吧~~~O(∩_∩)O~~
用户ID联想的方法由 icpebi.dll 提供,此组件的接口提供了
STDMETHODIMP CHrBaseInfo::Query(BSTR bstrKey, BSTR* pbstrResults);
方法,此方法返回的是查询到的XML,这是个基本、单一的方法。有没有必要将XML中的信息在 Query 中提取出来再返回呢?完全没必要,信息的表现形式千万种,以何种方式来表现,还是让用户自己去提取;若提取,反而把功能做的更死。
用户ID还涉及到验证,而且是很常用的功能。是否把验证功能作为 icpebi.dll 的方法来提供,是值得思量的问题,因为借助 Query 在组件外部也能进行验证。对我来说,很难拿捏。于是把跟用户ID有关的动词都提取出来,“查询”、“验证”、“修复”,验证和查询属同一粒度,所以作为方法提供是可以的。
验证一个用户ID是必须的,有没有必要提供验证多个用户ID的方法呢?要想提供此方法,有点复杂。多个用户ID验证,其结果有多种可能性,此方法的结果复杂性,让其不宜做为方法。借助单一的用户ID验证反而简单些,因此不提供。
总之,组件的方法要单一、简单且不失全面性。
我会选择后者。看看下面的例子吧~~~O(∩_∩)O~~
用户ID联想的方法由 icpebi.dll 提供,此组件的接口提供了
STDMETHODIMP CHrBaseInfo::Query(BSTR bstrKey, BSTR* pbstrResults);
方法,此方法返回的是查询到的XML,这是个基本、单一的方法。有没有必要将XML中的信息在 Query 中提取出来再返回呢?完全没必要,信息的表现形式千万种,以何种方式来表现,还是让用户自己去提取;若提取,反而把功能做的更死。
用户ID还涉及到验证,而且是很常用的功能。是否把验证功能作为 icpebi.dll 的方法来提供,是值得思量的问题,因为借助 Query 在组件外部也能进行验证。对我来说,很难拿捏。于是把跟用户ID有关的动词都提取出来,“查询”、“验证”、“修复”,验证和查询属同一粒度,所以作为方法提供是可以的。
验证一个用户ID是必须的,有没有必要提供验证多个用户ID的方法呢?要想提供此方法,有点复杂。多个用户ID验证,其结果有多种可能性,此方法的结果复杂性,让其不宜做为方法。借助单一的用户ID验证反而简单些,因此不提供。
总之,组件的方法要单一、简单且不失全面性。