实施例。
我有一个函数可以更改没有参数的像素数据(红色,绿色,蓝色)并使用全局结构glob
。我会访问glob.data
来读取红色,绿色,蓝色像素。
如果我要包含一个glob*
的参数,有什么区别,我可以从指针访问数据。
这是更好的做法,然后使用任何函数的全局吗?
这个实现比调用'glob.width = 2'等
更好RevolverFilter(&global, &temp);
void RevolverFilter(glob* org,glob* temp1){
for x: for y: tRed = org->data[x+y*w].r;
...
}
答案 0 :(得分:3)
“这是更好的做法,然后使用任何函数的全局吗?”
使用全局变量作为将参数传递给函数的替代方法绝对不是一个好习惯。
如果要创建一个处理(修改)像素的函数,请定义一个处理像素的函数
void processPixel(Pixel& p) {
...
}
答案 1 :(得分:0)
将数据和功能封装到对象中是面向对象设计的基础。因此,使用全局函数将函数传递给函数并不是一个“好的”OOD实践,对于非OOD设计,在C等结构语言中通常不是一个好的做法,因为它对代码组件的模块化是不利的,并在代码中创建“隐藏”依赖项。如果你绝对需要某种类似“全局”的功能,你可以在类中声明一个静态成员,使成员唯一,同时将其封装到一个组件(一个类)中。