为什么公共/私人这样一个重要的编程方面?

时间:2015-04-24 19:15:45

标签: objective-c oop

为什么在大多数编程语言中你能够拥有私有和/或公共方法/函数类和属性?

让所有类别,方法和属性公开,这是不是很不一样?

我知道如果您拥有所有方法,将classe ans属性设置为private,则无效。 所以至少我知道的那么多。

但两者之间的区别是否重要?如果一个班级知道另一个班级"这意味着私人"那么最重要的是什么?存在?

3 个答案:

答案 0 :(得分:2)

当您公开某些内容时,您需要与用户类签订合同:“嘿,这就是我提供的内容,是否使用它。”更改公共接口非常昂贵,因为您还必须使用该公共接口更改所有代码。想想成千上的开发人员使用的像Cocoa这样的框架的开发人员。如果您更改一个公共方法,例如删除一个,则会破坏数千个应用程序。它们也必须改变。

所以公开一切只是意味着你不能再改变任何东西了。 (你可以,但人们会在某一点上生气。)

让我们想一下实现列表的类。有一种排序方法:sortListWithKey。您将该公开,因为您希望类的用户获得排序列表。这很好。

有几种排序算法。比方说,你实现了一个需要计算子午线(中间元素)。内部需要此方法用于排序算法。因此私下实施它就足够了。更改包含已实现的排序算法的数据保持的整个结构是没有问题的,并且不会破坏使用该类的现有代码。

但是如果你将子午线方法公开(记住:你实现了它,因为你需要它在内部),你仍然必须保留它,即使新的排序算法也不需要它。您不能再删除它,即使使用新结构,保留该方法也非常困难(和/或昂贵)。

因此,将公开的那部分内容公之于众,对用户有用,但不能再做了。否则你会束缚自己。

答案 1 :(得分:1)

如果人类拥有完美的记忆力,文档和沟通技巧,并且没有犯错,那么可能没有什么有用的区别。但是,使用或更改错误文件中的某些内容然后忘记它(或者不为团队的其他人清楚地记录它,或者将来自己记录下来)是很常见的导致难以发现的错误的原因。

将事物标记为私有会使创建相同类型的错误变得更加有效,因此懒惰/困倦的程序员不太可能只是为了弄乱应用程序来完成所有额外的工作。

答案 2 :(得分:0)

在计算机科学中,它被称为信息隐藏。作为程序员,您希望仅向将使用您的公共API的其他程序员提供必要的方法或属性,这就是您在模块之间实现所谓的低耦合的方式。