什么时候我们应该使用公共和私人?

Bra*_* Ds 1 .net c# coding-style

当我们实现现在不在我们团队解决方案中的其他类使用的方法时,Access Modifier应该是Public还是Private?我相信"公众成员说这个成员代表了这个对象提供的关键,记录的功能." 我们只使用私有的"实现细节"方法和所有可能在将来有用的方法我们应该公开,即使现在我们的方法在其他类中没有消费者.但我的对手说这种方法应该是私人的.你怎么想?

补充:让我们更具体一点.例如,有一个类SqlHelper.其中有一些用于SQL Server操作的有用功能.特别是使用了与SQL服务器的连接.但不仅仅是在那个班级.

例如,我需要实现公共静态HandleSqlExeption方法(现在仅用于类SqlHelper),它将处理SqlExeptions.但是我希望在所有在异常处理中都有SQL连接操作的类中使用此方法(而不是它很简单,例如:catch(Exception){MsgBox {"SqlError"};就像现在发生的那样.所以我认为公共访问修饰符会告诉其他同事他们可以使用这种方法.而私有将隐藏该方法.如果有人要求使用tsuch方法,我将需要ti更改代码并重新组装.为什么?只有底片.

Ode*_*ded 10

通常,您应该使用尽可能少的许可访问修饰符进行编码.

  • 如果该方法未在课外使用,请进行private.
  • 如果需要通过继承类型来使用该方法,请创建它protected.
  • 如果该方法仅在装配体中使用,请进行制作internal.
  • 只有在组件外部使用该方法时才应该如此public.

这有助于隐藏信息,并允许您随意更改实现.

我听说这被描述为保护你的私人.


在API设计方面,您应该拥有一个完整的API,将所有逻辑功能公开为public- 这就是为什么您应该使用.NET中的接口进行API设计,因为所有接口成员都必须如此public.在实现类时,对于不属于接口的任何成员,请使用上述经验法则 - 除非它们与消费者有关,否则它们构成接口的逻辑部分.


因此,如果您Read今天使用的方法,您应该有一个Write具有相同可访问性的补充方法.这是一个很好的设计(对称和预期),但如何你读或写应该后面的专用方法被隐藏,如果公立使用它们.