联系我们

博客

工程师博客

注意全局变量

软件初学者容易中招的陷阱

这是在我初出茅庐,软件开发经验尚浅的时候,负责某个产品固件开发时经历的“搞砸”的失败教训。

该产品的规格中通过外部的输入输出切换进行远程控制的规定,配置该功能需要编写对输入输出进行定期监控并根据状态进行处理的程序。

处理本身比较简单,是将作为判断标准的输入输出状态直接保存在“全局变量”中,制作进行处理的函数。而且是在一定程度上可以预测的条件下进行运行验证,(自己认为)没有问题,于是就发布了。由于输入输出状态只有ON/OFF两种模式,因此,当时的验证是只通过上述模式的组合完成的。

在发布的几年之后,收到了无法正确处理外部输入输出状态的咨询,于是赶紧进行调查。

实际的使用条件是外部输入输出状态的切换周期非常快,而在开发时没有在这种苛刻的条件下进行验证,因此,找借口都无从找起。

进一步调查后发现,原因很简单,输入输出状态保存在全局变量中,所以想当然地认为定义后无论从哪里调用,数值都不会发生变化,没有考虑到输入输出状态通过其他函数内的处理而被置换的情况。因此,最终未能正确处理。

这个时候我才深切地认识到,无论在什么情况下,都不应使用全局变量进行处理,而是要充分理解设想功能的算法,并用自己的方式掌握数据流以及加工的整体概念,这一点是非常重要的。作为重要的基础知识,应该掌握全局变量会被哪里访问,会在什么时间被更新。

此外,在验证方法方面,我也深刻地认识到,除了ON/OFF这种单纯的模式之外,更重要的是将多个条件组合起来考虑(制定验证标准)。不过,将所有的组合都考虑进去也不现实…。

只要清楚这一点,就不会发生问题,但是,在第一次开发等的情况下,往往会出现哪怕是简单的问题也想不到的情况。遇到难题的时候可以去查网站,查书本,当然最快的方法是请教身边的同事。也许你不知道,其实很多人都会告诉你答案,也有很多人会给你提示以启发你的灵感。

TEXT BY
渡边 聪
解决方案开发部 解决方案推进课 课长代理

[主要产品开发业绩]
直流稳定电源PAT-T系列,电子负载装置PLZ-4W系列
系统模拟试验用软件(电网模拟器)
航空电子设备试验用软件
程序编写,控制软件 Wavy系列

联系我们