即使我将类成员函数公开并且被其他客户端应用程序使用,函数的实现细节也永远不会暴露给客户端.为什么要使成员函数受保护或私有?
例如,如果我的类是Math,使用公共函数sum(int,int b),那么只有接口/声明部分将暴露给客户端而不是实现.
public class Math
{
public int sum(int, int b)
{
//Implementation
}
}
public class Client
{
Math objMath = new Math();
objMath.Sum(4,10);//It will not display implementation inside sum than why to avoid
}
Run Code Online (Sandbox Code Playgroud)
您的方法(和类型)越公开,它们所暴露的代码就越多.这增加了其他代码(甚至是公司控制下的代码)启动的可能性,这取决于代码以当前的方式工作...这限制了以后更改实现的灵活性.
举一个具体的例子,我正在开发一个名为Noda Time的开源项目.现在我们还没有第一次公开发布,但我最近对各种内部类型进行了大量更改 - 包括相当大地更改类型层次结构,甚至删除方法.如果那些是公共类型或公共方法(如果我们已经进入v1.0)那么我们可能会破坏依赖于特定实现的代码.
通过隐藏您不知道对客户有用的所有内容,您可以为自己赢得很大的灵活性.对你的公共API进行大量思考是非常重要的,因为以后真的很难改变 - 但如果你在内部保留了很多实现,你可以重构你内心的内容,使它更优雅,更灵活或者更快......所有这些都不会破坏任何代码,具体取决于您的库.
显然有些事情需要暴露 - 至少在课堂图书馆中 - 但是你应该小心你暴露了多少,除非你很乐意以后打破所有的打电话(或者与你所做的每一个决定一起生活,永远).