变量私有化
为什么变量要私有化?
在一个结构良好的程序中,独立的模块之间通过在模块间传递参数的函数调用来交换数据。在大多数情况下,尤其是刚开始养成程序设计习惯的时候,最好确保每个全局变量不会被一个以上的模块引用。为了避免两个模块引用同一个全局变量的可能性,可以将变量私有化。
变量如何私有化?
变量私有化是在声明前用关键字static,如:
static int cpos;
这个声明定义cpos为一个全局整型变量,在所定义的模块里的任何地方都可见,但是对于别的模块是无效的,因此它是当前模块私有的。
说明:
在大多数情况中,最好认为static就是private(类似于C++)的同义词,这样更能贴切地描述它的用途。用关键词static声明变量可以使它们对于应用它们的函数来说是私有的。
函数私有化
为什么函数要私有化?
有人可能会问,无论函数还是过程,本身就是为了执行某一功能,应该是是要被调用的,那么为什么还要私有化呢?这里要清楚另外一个概念:接口。
接口的说明可参照以下资料:
接口很重要的作用之一是开放某些供用户使用的接口,隐藏起接口内部复杂的实现。因此定义接口时,供客户使用的接口导出的函数不是私有的。接口的要点就是让这些函数可以在其他模块中调用。在很多情况下,接口还会有一些为了实现接口功能但未无须开放给客户的函数。但是,客户可能会调用这些函数,或者客户自定义函数时,可能会和该函数重名。在这种情况下,要求某一函数要被限定在某一模块中才能使用,这样可以使得客户无法调用这些函数,从而使接口与用户间的抽象边界更加稳定坚固。
函数如何私有化?
函数私有化是在原型和实现的前面使用关键字static,如:
static string buffer;
说明:
声明函数为static在由几个程序员参与开发的大型程序环境中也有好处。如果函数或者全局变量没有声明static,组成整个程序的模块集合中的其他模块就不能使用这些名字,这样的话,程序员可能就需要更多的沟通,提高开发成本。因此,static关键词可以保证他们使用的名字对于自己模块的私有化。
如下的规则对于模块化开发来说是极好的指导。
静态声明原则:除了main函数和接口明确导出的函数之外,所有的函数必须被声明为static。
2018.05.09 12:35