正确应用访问修饰符

时间:2009-07-08 21:07:27

标签: oop encapsulation access-modifiers

我是一名学生正在寻找资源,这些资源可以帮助我进一步了解如何在我编码时正确地将访问修饰符应用于成员/类型。

我知道(在C#中)有哪些限制访问修饰符,如private,public,protected等。当我编写自己的小项目时,我倾向于公开一切。我确信这是一个绝对可怕的做法,因为它只是把窗口封装。我只是不知道什么时候使用内部与私人之类的东西是正确的。

有没有人有任何好的资源来帮助我理解正确使用访问修饰符?

6 个答案:

答案 0 :(得分:2)

这是一个体验类型问题。从最低权限级别开始,并在必要时进行升级。

换句话说,让一切都变得私密。直到你发现它需要被提升为受保护或公开。随着时间的推移,您将感受到您的课程的预期和后来发现的用法。

答案 1 :(得分:0)

开始把一切都私有化。如果您有需要,请相应地更改修改器,直到您有选择正确类型的感觉。

为了简化操作,请尝试使用TDD,否则在编写单元测试时可能会遇到更多麻烦......

答案 2 :(得分:0)

我只是尽可能限制所有访问:

  • 默认为私人
  • 否则为internal,如果它是一个暴露给此程序集中其他类的API
  • 或者,公开,如果它是在程序集外暴露的API
  • 或者,如果仅打算从子类调用,则受保护。

答案 3 :(得分:0)

任何类型的教程或教材都会给你相同的指导,即其他帖子已经给你的指导。因此,不要期望“资源”这个具体问题中有太多有用的信息。

超出此范围的主要资源是其他人编写的代码。参加一个大型的C#项目(例如MonoSharpDevelop),研究他们如何具体遵循已向您解释的原则。此外,如果您要设计一个特定的类,请尝试在系统库中考虑类似的类,并尝试找出它是如何实现的(通过查看Mono源或使用.NET反射器)。

答案 4 :(得分:0)

您应该首先考虑类的接口,这是为了实现其目的而需要公开的必要且充分的一组例程。公之于众。其他一切都应该是私密的。

答案 5 :(得分:0)

我倾向于保护一切不受公开的保护。让我的用户自由地在课堂上做任何他们想做的事情。如果他们的班级打破那将是他们的问题。

每次从类继承时,即使oop隐藏了实现,也需要知道它是如何工作的。您可以隐藏实现,但不会隐藏文档。