class Foo
{
private string bar;
}
class Foo
{
string bar;
}
我猜这两个声明是相等的。
所以我的问题是:如果变量已经是私有的,为什么还要标记为
private
?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#因为同样的原因愿意像他们对switch语句所做的那样支持它是一个错误。
在某些边缘情况下,明确使用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;
)可以消除混淆。
由你决定。做对可读性最好或在你的情况下有意义的事情。我将它们标记为私有,只是为了让它更清晰明了。
我认为为了易读性,最好是明确表达。
此外,您可能希望看一下 Visual Studio 插件 Code Style Enforcer(http://joel.fjorden.se/static.php?page=CodeStyleEnforcer),它使用 dxCore 扩展程序实时提供有关您的代码符合编码标准的反馈(完全可定制)。
我个人更喜欢显式地标记默认的私有和默认的公共字段。你可能很清楚这些默认值,但当你快速扫描代码时,你的大脑会喜欢冗长。