变量私有化和函数私有化,以及私有化的好处

变量私有化

为什么变量要私有化?

在一个结构良好的程序中,独立的模块之间通过在模块间传递参数的函数调用来交换数据。在大多数情况下,尤其是刚开始养成程序设计习惯的时候,最好确保每个全局变量不会被一个以上的模块引用。为了避免两个模块引用同一个全局变量的可能性,可以将变量私有化。

变量如何私有化?

变量私有化是在声明前用关键字static,如:

static int cpos;

这个声明定义cpos为一个全局整型变量,在所定义的模块里的任何地方都可见,但是对于别的模块是无效的,因此它是当前模块私有的。

说明:

在大多数情况中,最好认为static就是private(类似于C++)的同义词,这样更能贴切地描述它的用途。用关键词static声明变量可以使它们对于应用它们的函数来说是私有的。

函数私有化

为什么函数要私有化?

有人可能会问,无论函数还是过程,本身就是为了执行某一功能,应该是是要被调用的,那么为什么还要私有化呢?这里要清楚另外一个概念:接口。

接口的说明可参照以下资料:

接口设计的一般原则

如何自定义C语言.h头文件?

接口很重要的作用之一是开放某些供用户使用的接口,隐藏起接口内部复杂的实现。因此定义接口时,供客户使用的接口导出的函数不是私有的。接口的要点就是让这些函数可以在其他模块中调用。在很多情况下,接口还会有一些为了实现接口功能但未无须开放给客户的函数。但是,客户可能会调用这些函数,或者客户自定义函数时,可能会和该函数重名。在这种情况下,要求某一函数要被限定在某一模块中才能使用,这样可以使得客户无法调用这些函数,从而使接口与用户间的抽象边界更加稳定坚固。

函数如何私有化?

函数私有化是在原型和实现的前面使用关键字static,如:

static string buffer;

说明:

声明函数为static在由几个程序员参与开发的大型程序环境中也有好处。如果函数或者全局变量没有声明static,组成整个程序的模块集合中的其他模块就不能使用这些名字,这样的话,程序员可能就需要更多的沟通,提高开发成本。因此,static关键词可以保证他们使用的名字对于自己模块的私有化。

如下的规则对于模块化开发来说是极好的指导。

静态声明原则:除了main函数和接口明确导出的函数之外,所有的函数必须被声明为static。


2018.05.09 12:35

猜你喜欢

转载自blog.csdn.net/zhanshen112/article/details/80251732