如果它是多余的,你应该使用私人访问修饰符吗?

时间:2008-10-31 20:51:04

标签: c# coding-style

鉴于这两个例子是等价的,您认为哪个更合适?

没有显式修饰符

public class MyClass
{

    string name = "james";

    public string Name {
        get { return name; }
        set { name = value; }
    }

    void SomeMethod() { ... }

}

使用显式修饰符

public class MyClass
{

    private string name = "james";

    public string Name {
        get { return name; }
        set { name = value; }
    }

    private void SomeMethod() { ... }

}

我一直使用后者,但最近我开始采用前一种风格。私有是多余的,因为它是默认的访问者修饰符,所以排除它是否有意义?

14 个答案:

答案 0 :(得分:62)

我认为明确说明私人有助于提高可读性。它不允许程序员以不同的方式解释其可见性。

答案 1 :(得分:41)

看起来我们是唯一一个,但就个人而言,我支持让我们删除私人广告系列。

我关注的是公共和私有是如此相似,6-7个字符长度,蓝色,以'p'开头,所以在10个显式私有方法之间指定一个公共方法要比没有访问属性的10个方法更难

此外,这是一个优势,因为你团队中的懒人倾向于节省编写修饰符并使方法保密,这实际上是一件好事。否则你最终会公开一切。

我通常更喜欢明确的过度隐含,但在语言角落案例(棘手的作弊)中,这一点在广泛的特征中更为重要。在这里,我认为长阶可维护性更重要。

此外,我通常喜欢代码在数学方式中简单明了,而代码是明确的,以便保留未来编码器的无知。这是VB方式,而不是C#...

答案 2 :(得分:25)

将其标记为私有表明它是故意的,而不是“我实际上没有考虑过它,所以我不知道它是否会像其他东西一样更好。”;所以我喜欢说明一点。不过,我不会对此有所了解。

此外 - 这可以防止必须记住规则...默认情况下成员是私有的,默认情况下(外部)类型是内部的;嵌套类型默认是私有的......

说清楚......明确表示;-p

答案 3 :(得分:19)

我总是省略它以减少视觉混乱。在C#中,一切都默认为可见度最低。类成员(字段,方法,属性)默认为private。类默认为internal。嵌套类默认为private。

如果您需要显示更多的内容,请添加修饰符。这样可以轻松查看偏离默认可见性的项目。

我能看到它导致问题的唯一情况是你来自VB .NET背景。但是,嘿,我来自VB .NET背景,我仍然知道C#中的默认可见性。

另一方面,在VB .NET中,我几乎总是包含它,因为默认值是相当愚蠢的; Sub或Function的默认值为Friend,而不是Private

答案 4 :(得分:11)

我已经在C#中开发全职工作了大约7年,直到我读到这个主题,我才知道默认访问修饰符是什么。我知道有一个存在,但我从未使用它。

我喜欢在编码时明确声明我的意图。两者都是因为当我回去看它的时候,我可以看到这些声明,并且因为当我编写一个方法时,实际上正在考虑并输入“私人”这个词让我想到了我对它的想法。做。

答案 5 :(得分:7)

就个人而言,我更喜欢私人修饰符 - 我喜欢显性。对于字段,它还突出显示它是一个成员变量而不是一个函数变量(唯一的区别就是位置 - 如果人们可以正确缩进,这是可以的,但否则可能会造成混淆)。

答案 6 :(得分:6)

我喜欢通常超级明白。我会一直指定“私人”。然而,还有另一个原因:程序员来自编程语言,其默认可见性是私有但是公开,例如PHP。

答案 7 :(得分:5)

我总是喜欢明确,即使它是多余的。这提供了内置的代码注释,可以帮助下一个人,特别是如果他是一个菜鸟。 : - )

答案 8 :(得分:4)

始终使用显式表单。如果由于某种原因基础假设发生变化,具有明确的访问表示的代码将不会中断,而隐含的内涵很容易破坏。

此外,当您谈论不同类型的结构时,它们可能具有不同的默认可访问性。如果没有显式修饰符,读者就可以知道哪个结构具有默认值。例如。在C#中,结构字段默认为public,类字段默认为private,类定义默认为internal

答案 9 :(得分:3)

我一直都是明确的。如果没有别的,它会更清楚地表明你的意图。如果我想把某些东西私有,我会这么说。明确地键入修饰符可以确保我考虑它,而不是仅仅因为它更快而将事物保密。这一长串成员排得更好:)

答案 10 :(得分:3)

我总是明确指定可见性。我不想让编译器猜出我的意图。

答案 11 :(得分:1)

你是对的但是因为你希望你的代码对我认为你应该包括的每个人都是可以理解的,你永远不知道什么时候有人不知道这个

答案 12 :(得分:1)

除非另有说明,否则我的理解一直是会员具有“内部”可访问性。如果这是真的,则需要“私有”修饰符来确保这些成员实际上是私有的。

无论我对上述内容是否正确,保留修饰符都会增加代码的可读性,以防其他开发人员稍后修改此类并对可访问性感到好奇。希望这有帮助!

答案 13 :(得分:1)

首先,我将询问是否存在关于团队使用的先前代码约定/标准。如果有,你应该遵循它。

如果你必须定义约定,我将推动明确的方式。

我的理由?;

  • 我喜欢保持相同的结构(我的意思是a.-access修饰符,b。-return-type / type,c.-name)。
  • 我不希望(我不希望其他人)默认记住所有修饰符(which are here)。
  • 并非所有语言都有相同的规则。
  • 不知何故,我认为,不知何故,这会迫使开发人员思考并更加关注变量/方法的范围以及对这些变量/方法的阐述。如果您有一些经验,这可能不适用,但如果您是新手,或者您与经验较少的人一起工作,我认为这很有用。