1

我有这个界面...

public interface ICheckThatDocumentExistsCommand
{
   bool Execute( string userId, string docId );
}

在实现中,我只想验证两个 id,如果有效,则返回另一个接口的结果......

public interface ICheckThatDocumentExistsCommand
{
   bool Execute( UserId userId, DocumentId docId );
}

我想在同一个业务域程序集中定义接口,但我很难决定如何区分两个(或更多)层。从逻辑上讲,我认为它们即使名称不同也相似,因此我不能将它们放在同一个命名空间下。我是否通过命名空间分开?“验证”命名空间和“其他”命名空间?或者我是否将已经罗嗦的名字扩展成有点可笑的东西,比如......

public interface IValidateIdsAndThenCheckThatDocumentExistsCommand

随着我保持功能小且用途单一,我看到这种情况越来越多。

4

3 回答 3

2

好吧,它的实现类正在弄清楚如何处理参数......那么为什么不让实现类确定和验证类型......

public interface ICheckThatDocumentExistsCommand
{
  bool Execute<t1,t2>(t1 userID, t2 docId);
}
于 2011-10-05T22:53:06.237 回答
1

使用命令模式不是一个不常见的问题。我通常可以将命令名称保持在最多四五个字,但有时需要更长的名称。

我看到两个具有相同名称的接口令人头疼:

  1. 任何引用这两个程序集的类都必须使用完全限定的类名。
  2. 假设您的文件名与您的类名匹配,源代码控制令人头疼的是将文件直接放在脑海中(我现在要合并哪个文件?)。
  3. 在 Resharper 中输入 GoTo 将始终需要一个额外的步骤。

我同意第一个接口所做的额外工作应该反映在名称中。您的建议可行,但您可以将其缩短为类似

IValidateIdsAndCheckForDocumentCommand

那不是太长。:)

于 2011-10-05T23:00:16.453 回答
1

我喜欢 Tims 的回答,因为它很聪明,我喜欢 Thomas 的回答,因为他显然知道这个领域。

如果是我,我很可能会使用不同的命名空间。

于 2011-10-06T05:01:59.060 回答