嵌入式软件不良设计

1、全局变量泛滥

 全局变量的泛滥是嵌入式系统中烂代码的一个杰出特征。

1.1 泛滥的表现

 全局变量过多。全局变量过多,导致维护者(包括几个月后的开发者本人)在分析、修改代码的过程中无所是从。有时候为了了解一小段代码的功能,需要搞清楚十几个全局变量所代表的含义、这些变量会在什么时候被改变、什么时候

会被调用。人脑的“栈”空间是有限的,一下子要存入这么多东西,瞬间不够用了。

 全局变量到处都在被赋值。有时候为了找出系统状态改变的原因,需要知道某个全局变量在哪里被改变了;这个时候一查找,发现很多地方都对这个变量进行了改变。为此,我们需要针对每一处改变的地方进行分析;这真是很让人郁闷的

一件事。

 多个全局变量相互依赖。某些全局变量使用的地方并不算多,似乎很容易分析;然而找到某处调用的地方,你却发现

它的改变依赖于其他几个全局变量的值。这几个全局变量的值又依赖于其他全局变量。于是你开始一层层查找下去。到

最后,你发现为了搞清楚第一个全局变量的使用情况,你几乎要翻阅几十个文件。这也是很让人崩溃的地方。

 1.2 泛滥的危害

从上一节,我们可以看到,滥用全局变量的一个很重大的危害在于,我们在维护的过程中将变得极其困难:我们需要

花费很多的精力才能搞清楚这个变量的使用情况,然后才能对代码进行分析、改进。

除此之外,还存在其他方面的危害。

很多工程师习惯于直接对全局变量进行修改和判断使用,而不对其进行任何封装

保护。这直接导致全局变量暴露给外部,也许一个不小心我们就把它意外赋值了(比如本来想改变其中一个比特位,

却把其他比特位也改变了)。

另外,对于多任务系统来说,全局变量也是造成共享数据访问冲突的一个重要原因。如果不对全局变量进行规范化处理,

将需要在各个地方对全局变量进行保护,这很容易造成死锁。

1.3 改进措施

1)尽量避免使用全局变量。能用局部变量的,就不要用全局变量;能用模块全局变量的,就不要用系统全局变量。

 2)函数传参替代全局变量的使用。某些信息在函数之间的传递,完全可以用函数传参的方式来实现,因而没有必要

使用全局变量。

3)对全局变量实行统一管理。全局变量也可看做是一种资源。我们在对外设进行操作的时候,经常会对其进行接口封装,

而不是每次都直接操作其寄存器。为什么在使用全局变量的使用过程中我们就不这么做了呢?要知道,将实现和使用分离,

对我们后续的维护工作可是很大的一个帮助啊。

2、函数封装

2.1 不良封装的表现及危害

1)层次不清;

2)模块耦合;

3)函数过长;

4)流程混乱;

5)使用全局变量替代传参

6)函数命名没有足够的提示作用


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值