私有成员是不是应该在惯用的 C# 中显式声明为私有? [关闭]
Posted
技术标签:
【中文标题】私有成员是不是应该在惯用的 C# 中显式声明为私有? [关闭]【英文标题】:Should private members be declared explicitly as private in idiomatic C#? [closed]私有成员是否应该在惯用的 C# 中显式声明为私有? [关闭] 【发布时间】:2013-07-30 16:42:33 【问题描述】:由于类成员在 C# 和 the best code is no code at all 中默认是私有的,所以惯用的 C# 是否省略了将私有成员声明为 private
以避免混乱?还是更常见的是直言不讳?
需要明确的是,我并不是在询问每个人对此事的看法,而是在完善的代码库中更常见(我对 C# 还很陌生)。
【问题讨论】:
按照您的喜好。如果有人在意您明确声明了某些内容private
,那么他们就是在挑剔并浪费您和他们的时间。恕我直言
微软似乎在 .NET Framework 库中这样做了。
【参考方案1】:
Why explicitly write "private"? 可能重复。我认为最好将它们明确声明为私有。您的代码变得更具可读性,尤其是对其他人而言...主要原因是私有不是每种语言的默认访问级别,正如上述问题中接受的答案所述。
【讨论】:
【参考方案2】:大多数 C# 样式指南似乎更倾向于显式而不是隐式。例如,如果声明任何类型(类、接口、字段、属性、方法等)的对象而没有访问修饰符,StyleCop 几乎总是会报错。
我个人的偏好也是始终包含private
关键字,因为这样更容易一眼看出该成员是私人的。如果没有访问修饰符,我的大脑必须经历一个两步过程,首先需要确定没有访问修饰符,然后记住没有修饰符 = private
。
让事情变得更复杂的是,例如在类上,没有访问修饰符 = internal
。我理解为什么字段/属性/方法和类/接口在这方面需要有所不同,但我不喜欢缺少访问修饰符会根据对象类型改变其含义的事实。
但这一切当然值得商榷。
【讨论】:
【参考方案3】:就个人而言,我将它们声明为private
,以防其他人拿起代码并做出可能不正确的假设,或者决定更改范围级别(认为您忘记对成员进行评分) .
此外,其他一些语言可能有不同的默认实现,因此如果您团队的新成员第一次使用 C#,显式减速将帮助他们。
在 Safari Books 上的 C# 最佳实践中找到了这个:
始终为所有类型和成员显式使用范围关键字。
为什么:Visual Basic 类型成员的默认范围是 Public, 而 C# 的默认范围是私有的。省略范围 关键字可能会迷惑那些更熟悉其他的开发者 语言。
【讨论】:
不要忘记 Java 的默认值与internal
最相似(没有直接等效项)。但是private
始终是private
。以上是关于私有成员是不是应该在惯用的 C# 中显式声明为私有? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章