作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
此命名约定背后的基本原理是什么?
我没有看到任何好处。额外的前缀只会污染 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/
我是一名优秀的程序员,十分优秀!