这很简单。听一遍 .NET 框架指南实际上会有所帮助(尽管书中的大量材料只是简单的 Java 风格元素,但在 Redmond Wonderland 中再次出现)..
您应该避免在交叉或项目内/库混合命名空间中使用类似的类型名称,即。一般跨域和模型混合(即使是在极其严格和强大的 C++ 中,它也有编译器、解析和枚举式编译器崩溃和问题的化身)。
因此,即使始终完全限定也不是万无一失的(顺便说一句,别名和“使用”极为有限,充其量只会造成轻微的重复,并证明 C# 在泛型编程等方面的弱点)。
根据我的经验,数据域类型是更合适的名称的主要目标,因此对于名称重构来说:
a) 便宜(作为丰富的 AST 中的一个过程,但像在 C# 中一样简单的 adt-s 支持,在 IDE 中右键单击并根据类型挑战的动态 Ruby 粉丝/支持者感觉强大)
[也可以理解为:4.0 动态特性羊会责怪所有人,但不要考虑命名空间或函数式 JS、C-with 模板(不是 C-with-classes)或类似内容]
b) 更好地传达语义,即。意图(即管道+支持构建您自己的处理)
c) 通常具有原始但类型化的性质或信息(类型化而不是 OO;即前面提到的书中的 OO 风格的批评,它本身直接脱离了介绍,将所有“模型”提升到参考土地)
d) 并且“aliasing”成为跨域使用中的有用工件(这实际上是可能的,并且非常类似于 2020 年......即值类型编程)
确实没有规则,但请注意,您会在最意想不到的情况下在开发中看到名称空间的混合。这对于有管理意识的开发人员来说只意味着一件事:混乱。再加上不那么严重,当然还有更多的编译时间和 IntelliNonsense 错误..
所有语言的难题,所以这是您的设计/命名问题。。即使是工具供应商也可能搞砸机器来解析。说基于过时浏览信息的增强流行 IDE 的输出;再说一次,其他人在托管语言方面做得很好。
并不是说我反对重复名称,当混合双重 + 互操作 + 表示等其他模型时,有些情况(它们很难但必要)相同的名称使其更具可读性; IE。其中重复是双重使用的必要条件.. 但这是 C# 不友好或不鼓励使用的较低级别的习语(re: 赞成开销)。