当前位置:  开发笔记 > 编程语言 > 正文

你应该在什么命名空间中放置相对于它们的实现者的接口?

如何解决《你应该在什么命名空间中放置相对于它们的实现者的接口?》经验,为你挑选了3个好方法。

具体来说,当你创建一个接口/实现者对,并且没有重要的组织关注点(比如接口应该放在不同的程序集中,即按照s#体系结构的建议)你是否有一种默认的方式来组织它们命名空间/命名方案?

这显然是一个更基于意见的问题,但我认为有些人已经考虑过这个问题,我们都可以从他们的结论中受益.



1> Jeff Yates..:

答案取决于你的意图.

如果您希望命名空间的使用者在具体实现上使用接口,我建议您将接口放在顶级命名空间中,并在子命名空间中使用实现

如果消费者要同时使用它们,请将它们放在同一名称空间中.

如果接口主要用于专门用途,例如创建新实现,请考虑将它们放在子命名空间(如Design或ComponentModel)中.

我确信还有其他选项,但与大多数命名空间问题一样,它归结为项目的用例,以及它包含的类和接口.



2> FlySwat..:

我通常将接口保持在与具体类型相同的命名空间中.

但是,这只是我的观点,命名空间布局非常主观.

Animals
|
| - IAnimal
| - Dog
| - Cat
Plants
|
| - IPlant
| - Cactus

通过从主命名空间中移出一个或两个类型,您实际上并没有获得任何东西,但是您确实添加了一个额外的using语句的要求.


如果我想从另一个命名空间使用另一个Dog类会发生什么?我认为在同一名称空间中使用接口和实现并不是一个好习惯.

3> George Mauer..:

我通常做的是在我的层次结构中创建一个高级别的Interfaces命名空间并将所有接口放在那里(我不打算在其中嵌套其他命名空间,因为我最终会得到许多只包含一个接口的命名空间).

Interfaces
|--IAnimal
|--IVegetable
|--IMineral
MineralImplementor
Organisms
|--AnimalImplementor
|--VegetableImplementor

这就是我过去做过的方式,我没有遇到过很多问题,不过可以肯定的是,对于那些坐在我的项目中的人来说,这可能会让人感到困惑.我很好奇看到其他人做了什么.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有