私有成员是不是应该在惯用的 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# 中显式声明为私有? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

私有成员是不是在 C# 中继承?

在 c# 中将一组成员标记为私有/公共

OOP 和私有字段的继承

C# 类和只读成员

在继承中访问私有成员

测试私有函数的惯用方法是啥?