请问你编程喜欢使用全局变量吗?

g
gooog
楼主 (北美华人网)
请问你编程喜欢使用全局变量吗? 使用全局变量有何优势和弊端。
是不是更方便,因为不需要从函数里传递进去,再传递出来。


S
Sleepy3824
Please DO NOT.
Hard to read, difficult to secure, arduous to debug, against all OO principles, mutate almost randomly, and impossible to unit test.
g
gokgs
of course no. try your best to avoid it, at most using file scope static.
s
sorasky
回复 1楼gooog的帖子
不,难维护。
扶苏
看你怎么用。如果用C写,都是跟driver, device打交道的话,何尝不可?一般application level不会用。
d
dngdnhxqs
全局变量隐患多啊
C
Cath226
原来大家都不喜欢。那我就放心了。接了前辈的code,里面几个全局变量快把我弄死了,我直接改了。。。
m
miked
如果不用全局变量 那怎么在一个y=f(x)的函数调用里面,对x这个变量改变值呢?
大家用指针吗?

x = 5; y=f(x); 希望x能变成-100
y = f(z) { z = -100; }
m
minqidev
如果不用全局变量 那怎么在一个y=f(x)的函数调用里面,对x这个变量改变值呢?
大家用指针吗?

x = 5; y=f(x); 希望x能变成-100
y = f(z) { z = -100; }
miked 发表于 2023-11-29 23:39

做法一般是
x=5
y=f(x){ // 省略n步计算 return -100; }
x = f(x)
m
miked
原来大家都不喜欢。那我就放心了。接了前辈的code,里面几个全局变量快把我弄死了,我直接改了。。。
Cath226 发表于 2023-11-29 23:35

你怎么改的。而不影响结果?
m
miked
做法一般是
x=5
y=f(x){ // 省略n步计算 return -100; }
x = f(x)
minqidev 发表于 2023-11-29 23:41

但是如果f这个函数还有更重要的值y需要输出,怎么办?
m
miked
做法一般是
x=5
y=f(x){ // 省略n步计算 return -100; }
x = f(x)
minqidev 发表于 2023-11-29 23:41

还有一个问题。
如果x=f(x) 需要重复运行10万次。 i=0 while(i > 1e5){ x=f(x) i = i + 1 }
这个时候是把x设成全局变量节省计算时间;还是用你说的这个函数返回节省计算时间?
g
gooog
但是如果f这个函数还有更重要的值y需要输出,怎么办?
miked 发表于 2023-11-29 23:45

用指针