据我所知,在 C# 中,所有字段默认都是私有的,如果没有另外标记的话。
class Foo
{
private string bar;
}
class Foo
{
string bar;
}
我猜这两个声明是相等的。
所以我的问题是:我应该将私有变量标记为什么,就private
好像它们已经是私有的一样?
据我所知,在 C# 中,所有字段默认都是私有的,如果没有另外标记的话。
class Foo
{
private string bar;
}
class Foo
{
string bar;
}
我猜这两个声明是相等的。
所以我的问题是:我应该将私有变量标记为什么,就private
好像它们已经是私有的一样?
现在; 无论如何,字段几乎总是应该是私有的,所以你是否应该打扰是一个边缘情况。
对于更广泛的主题,我记得 Eric Lippert 的评论 - 基本上是说给定一个方法/类/任何东西:
void Foo() {}
class Bar {}
然后不清楚它们是否是故意的私有/内部,或者开发人员是否考虑过,并决定它们应该是私有/内部/什么的。所以他的建议是:告诉读者你是故意而不是偶然做事——让它明确。
关于这件事,我已经有一段时间了。我曾经主张让它隐含,但现在我认为我倾向于让它变得明确。
隐含的原因:
明确说明的原因:
后面这几点基本上是 Eric Lippert在我们前段时间讨论时提出的。
是的,它们是平等的,但我喜欢将私有变量标记为私有,我认为它可以提高阅读能力。
我也对私人成员使用这种通用符号,它非常有用:
private string _bar;
这纯粹是一个编码标准问题,但是,为了它的价值,我总是明确地将私有成员标记为私有。
如果您定期在 Java 和 C# 之间切换,我想明确指定访问修饰符将非常重要。例如在 Java 中
void myMethod()
{
}
包中的任何类都可以访问该方法。在 C# 中,它显然是类和内部类私有的。
不要让人猜测,不要让他们做出错误的假设,也不要认为更少的字符以任何方式等同于清晰。
没有充分的理由不明确说明这一点,恕我直言,C# 支持它是一个错误(特别是如果他们愿意做他们所做的事情来切换语句)
在某些极端情况下,显式使用 private 可以提高可读性。
例子:
/*
Tomorrow when we wake up from bed,
first me and Daddy and Mommy, you, eat
breakfast eat breakfast like we usually do,
and then we're going to play and
then soon as Daddy comes, Carl's going
to come over, and then we're going to
play a little while. And then Carl and
Emily are both going down to the car
with somebody, and we're going to ride
to nursery school [whispered], and then
when we get there, we're all going
to get out of the car...
*/
int spam;
/*
Does this style look at all familiar?
It should!
*/
查看此片段,您可能不确定您是在方法范围内还是在类范围内。
在字段名称 ( ,或) 中使用其中一个private
或下划线将消除混淆。private int spam;
int spam_;
int _spam;
由你决定。做最好的可读性或对您的情况有意义的事情。我将它们标记为私有只是为了说明清楚。
我认为为了可读性,最好是明确的。
作为一个方面,您可能希望查看一个名为Code Style Enforcer ( http://joel.fjorden.se/static.php?page=CodeStyleEnforcer ) 的 Visual Studio 插件,它使用 dxCore 扩展来提供真实-您的代码遵守编码标准的时间反馈(完全可定制)。
我个人更喜欢明确标记默认的私有和默认公共字段。您可能很了解默认设置,但只要您快速扫描代码,您的大脑就会喜欢冗长。