如何区分命令模式中逻辑上命名相同的图层?
我有这个接口...如何区分命令模式中逻辑上命名相同的图层?
public interface ICheckThatDocumentExistsCommand
{
bool Execute(string userId, string docId);
}
在实现中,我只是想验证这两个ID和,如果有效,返回其他接口的结果...
public interface ICheckThatDocumentExistsCommand
{
bool Execute(UserId userId, DocumentId docId);
}
我想在同一个业务域程序集中定义接口,但是我很难决定如何区分这两个(或更多)层。从逻辑上讲,如果名称不同,我认为它们是相似的,所以我不能将它们放在相同的命名空间下。我是否通过命名空间分开?一个“Validation”命名空间和一个“Something-else”命名空间?还是我扩大已经罗嗦名到的东西有点可笑像...
public interface IValidateIdsAndThenCheckThatDocumentExistsCommand
我看到这个拿出更多的和我保持功能和小单旨意更多。
并不少见使用命令模式的问题。我通常最多可以将命令名保留四到五个字,但偶尔需要更长的时间。
我看到两个接口具有相同名称的头痛:
- 任何类引用两个组件必须使用完全合格的类名。
- 源代码控制让头脑中的文件头晕(我现在正在合并哪一个?),假设你的文件名与你的类名匹配。
- GoTo键入resharper将始终需要一个额外的步骤。
我同意第一个界面所做的额外工作应该反映在名称中。你的建议可行,但你可以将它缩短到像
IValidateIdsAndCheckForDocumentCommand
这不是太长。 :)
那么,它的实现类是搞清楚什么与PARAMS做....所以为什么不让实现类确定和验证类型....
public interface ICheckThatDocumentExistsCommand
{
bool Execute<t1,t2>(t1 userID, t2 docId);
}
引用一个有趣的解决方案,我会一直跟我+1。然而,现在我想到了,它们的类型完全不同,可能仅仅是巧合。在另一种情况下,签名可能是相同的。这使我进一步朝着命名解决方案迈进。 – StarTrekRedneck
我喜欢蒂姆斯的回答,因为它很聪明,我喜欢托马斯的回答,因为他显然知道领土。
如果是我,我很可能会使用不同的名称空间。
我越想越多,我越喜欢命名空间解决方案,因为它为不同的自定义返回类型,参数类型,支持接口等提供了一个家。我一定会使用这个,所以+1。然而,对于一个非常小的问题领域,我认为最简单的事情是适度的名称变更。 – StarTrekRedneck
谢谢你清理我的头,并提醒我额外的工作值得肯定。对于这种简单的情况,我想我会采用你建议的名字。谢谢你。 – StarTrekRedneck