如果私有变量已经存在,我应该将其标记为私有变量?

时间:2009-02-16 10:24:29

标签: c# .net default declaration

据我所知,在C#中,如果没有标记,则所有字段都是默认的。

class Foo
{
  private string bar;
}

class Foo
{
  string bar;
}

我猜这两个声明是平等的。

所以我的问题是:如果私有变量已经是私有变量,我应该将其标记为private

10 个答案:

答案 0 :(得分:27)

现在;无论如何,字段应该总是私有的,所以无论你是否应该打扰它都是一个优势。

对于更广泛的主题,我记得Eric Lippert发表的评论 - 基本上是说给定一个方法/类/其他:

void Foo() {}
class Bar {}

然后不清楚它们是否是私人/内部故意,或者开发人员是否已经考虑过它,决定它们应该是私人/内部/其他。所以他的建议是:告诉读者你是故意做事而不是偶然做事 - 明确说明。

答案 1 :(得分:15)

我已经有一段时间了。我曾经主张将其隐瞒,但现在我认为我已经倾向于明确这一点。

隐含的理由:

  • 这意味着非私人成员(或任何访问权限超过默认成员的东西)会有更大的差异;这突出了阅读代码时的区别

明确的原因:

  • 有些开发人员可能不知道默认值:明确表示所有人
  • 它表明您已经积极做出决定,而不是仅仅将其保留为默认

我们刚才讨论过这些后面的点是basically the ones made by Eric Lippert

答案 2 :(得分:7)

是的,他们是平等的,但我喜欢将私有变量标记为私有,我认为这会改善阅读。

我也对私人会员使用这种常用符号,这非常有用:

private string _bar;

答案 3 :(得分:4)

这纯粹是一个编码标准问题,但是,为了它的价值,我总是明确地将私人成员标记为私人。

答案 4 :(得分:4)

如果您定期在Java和C#之间切换,我认为指定访问修饰符明确是非常重要的。例如在Java

void myMethod()
{

}

您的包中的任何类都可以访问该方法。在C#中,它显然属于类和内部类。

答案 5 :(得分:3)

不要让人猜测,不要让他们做出错误的假设,也不要认为更少的字符等同于清晰度。

没有充分的理由来明确这一点,而且C#支持它是错误的(特别是如果他们愿意为了同样的原因而做他们为了切换语句而做的事情)

答案 6 :(得分:2)

明确使用私有可以提高某些边缘情况下的可读性。

示例:

        /*
        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!
        */

看一下这个片段,你可能不确定你是在方法还是班级范围内。

在字段名称(privateprivate int spam;int spam_;)中使用int _spam;或下划线可以消除这种混淆。

答案 7 :(得分:1)

由你决定。做最好的可读性或在你的情况下有意义。我将它们标记为私有,只是为了说清楚。

答案 8 :(得分:1)

我认为为了便于阅读,最好是明确的。

作为一方,您可能希望查看名为 Code Style Enforcer http://joel.fjorden.se/static.php?page=CodeStyleEnforcer)的visual studio插件,该插件使用dxCore扩展来提供实时反馈您的代码遵守编码标准(完全可定制)。

答案 9 :(得分:0)

我个人更喜欢明确标记默认的私有和默认公共字段。你很可能知道默认值,但是当你快速扫描代码时,你的大脑会喜欢冗长。