很容易假设一个系统在现场表现得和在工程台上一样完美 。 在开发过程中 , 嵌入式软件是在最好的条件下编写的 。 嵌入式开发人员知道 , 或者至少有他们自己的系统应该如何工作的概念 。 事情通常运行得相当顺利 , 但随着成千上万的设备开始进入用户手中 , 意外发生和错误发生的可能性在统计上变得很可能 。 在今天的文章中 , 让我们探讨开发人员编写可以处理意外错误的软件所需的策略 。
策略#1 – 不断考虑可能出现的问题
开发人员需要部署以处理错误的第一个策略是在编写每一行代码时积极质疑可能出现的问题 。 例如 , 当我为如下函数编写实现时:
voidDio_WriteChannel(DioChannel_t Channel bool state)
{
//Additional code goes here
我问自己几个问题:
如果Channel 参数超出范围会发生什么?
该函数应该返回错误代码还是成功标志?
如何验证所需的通道状态是否已更改?
如果状态试图改变但不能改变 , 我该怎么办?
内存是否会损坏 , 以至于我的bool状态变量不是真假?如果是这样 , 我该如何处理?
断言是否足以在开发时检查边界条件 , 还是应该对参数进行实时检查?
这是很多问题 , 或者诸如简单通用代码块之类的问题 , 我们真的还没有开始填写细节!但是 , 如果你希望能够处理错误 , 则必须不断地质疑代码以及可能出现的问题 。
策略#2 – 使用TODO 记录疑虑和问题
随着软件的开发 , 有时问题多于目前的答案 。 在上面的示例中 , 可能还没有关于如何处理返回错误的答案 。 暂时就这样真的很容易 , 但是随着其他问题会出现 , 这个问题就会被遗忘在喧嚣中 。
大多数现代IDE都会有自定义标签 , 可以从代码中提取这些标签来创建一个列表 , 例如使用TODO 。 这些将显示为信息性消息 。 如果有需要处理的错误 , 但我不知道如何处理 , 我会使用TODO 。 如果有一个实现 , 但我想查看它 , 我可能会使用TODO , 但也可能使用其他一些我可以轻松搜索代码的关键字 。 需要注意不要让TODO信息消息过载 , 否则它会变得太嘈杂 , 但我们也希望确保我们不会丢失我们的问题或问题 。 (是的 , 可以使用外部跟踪器 , 但我发现将其与代码一起保存要容易得多 , 因此代码审查员和其他嵌入式开发人员可以轻松地看到它) 。
策略#3– 总是抱着“以后会改的态度”
现在是修复、记录或实施错误检查的最佳时机 。 总是有某些问题正在引起开发人员的注意 , 虽然我们总是想返回并添加错误处理 , 但却总是在拖延!
一旦某些事情似乎对管理层有用 , 就该着手处理下一个紧迫问题了 。 如果它有效 , 你为什么要在它上面投入更多的时间来减少回报?管理层没有意识到你没有包括错误检查或实施中存在巨大的漏洞!如果产品需要健壮性 , 请不要尝试稍后添加它 , 或者相信你可以稍后再返回并修复它 。
结论
【软件|嵌入式开发:嵌入式软件中的3种错误处理策略】嵌入式开发人员编写软件的方式决定了他们的系统是否能够从错误中优雅地恢复 , 关键是要有正确的开发态度 , 在编写软件时考虑可能出现的问题并实施恢复机制 。 为了更好地处理错误 , 请处理当前可能出现的问题 , 否则将永远无法处理 。
- 2020年|《黑神话:悟空》开发商曾拒绝腾讯收购
- 巴斯|苹果汽车团队软件工程主管离职,此前管理团队几乎全部离职
- 超级计算机|Facebook 母公司 Meta:开发出全球最快 AI 超级计算机,与英伟达联合打造
- 由维克多游戏开发|《侠之信条》双版本形式登陆steam定价35元
- 美团|小镇上的所有商家联合起来开发专属外卖app,来抵制美团高抽佣可行吗?
- 软件|手把手教你写歌!网易天音AI创作平台上线:10秒制作拜年歌
- 软件|携程创始人浅谈元宇宙,旅游或成第一落地点!
- 苹果公司|事实证明,只有苹果公司才能治的了国产流氓软件
- |开发商给埋的五类网线,家中想改为千兆网络怎么办好?
- html5|Web前端培训:为什么我们应该使用 HTML5 开发网站