c# - 为什么在 C# 接口(interface)名称前加上 “I”

标签 c# naming-conventions interface

此命名约定背后的基本原理是什么?

我没有看到任何好处。额外的前缀只会污染 API。

我的想法与 Konrad 的一致 response与此相关question ;选择answer其中大部分是我在这里要求的。

最佳答案

它完全相反,命名约定清楚地标识了一个接口(interface)。

例如,如果您有:

public class Dog : IPet, IMammal
{
    ....

仅通过阅读,我就可以有把握地假设 IPet 和 IMammal 可能是接口(interface)。

.NET CLR 允许单类继承。所以,如果我有一个基类……我只能从它继承一个类。让我们将 IPet 接口(interface)更改为基类..我们的示例现在变为

public class Dog : Pet, IMammal
{
    ....

我正在继承 Pet 类并实现 IMammal 接口(interface)。

如果我们按照您的建议去做并删除了字母“I”,我们就会得到:

public class Dog : Pet, Mammal
{
    ....

我继承自哪个类?我正在实现的接口(interface)是哪个?它变得困惑吗? (仅供引用..你应该总是把基类放在第一位,所以你可以争论这一点......但是如果你争论要从接口(interface)名称前缀中删除字母 I 我怀疑你是否也遵循这种做法)

如您所见,命名约定很容易告诉我很多关于我的对象的信息,而无需我进一步调查。我可以很容易地看到我继承了什么与我正在实现什么。

关于c# - 为什么在 C# 接口(interface)名称前加上 “I”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/437649/

相关文章:

c# - NUnit:OneTimeTearDown 失败时测试失败

c# - LINQ 查询连接两个表并从表 B 中选择表 A 对应的最新记录

c# - 使用 MVC 时实体模型的命名约定

php - oophp,方法和属性命名

c++ - 为自定义类和库类实现通用接口(interface)的最佳方法

c# - 无法通过引用转换、装箱转换、拆箱转换、包装转换或空类型转换来转换类型

c# - 使用 FileSystemWatcher 监视文件系统

c# - Visual Studio 中的 Microsoft Azure 机器学习工作室?

java - java中列表变量的好名字

java - 创建接口(interface)的 "object"