当前位置:网站首页>嵌入式开发:技巧和窍门——提高嵌入式软件代码质量的7个技巧
嵌入式开发:技巧和窍门——提高嵌入式软件代码质量的7个技巧
2022-07-04 21:46:00 【粤嵌教育】
对于开发人员来说,没有什么比试图维护和更新质量如此之差的代码更糟糕得了。对于许多开发团队来说,软件代码质量并不是必需的。为了提高代码质量,这里有几个嵌入式开发人员可以遵循的技巧,并集成到自己的流程中,这将有助于提高他们的代码质量。
技巧1——遵循编码标准
对提高代码质量感兴趣的开发人员应该从检查行业标准开始。开发人员可以利用许多行业标准来改进他们编写代码的方式,包括:
l MISRA-C
l Cert-C
l IEC 12207
l IEC 62304
这些标准为开发高质量的软件建立了框架。任何想提高软件质量的人都应该回顾一下已经做了什么,并开始实施行业建议。
技巧 2——分析和维护软件复杂性
已经多次证明,最小化软件复杂性也可以最小化错误率。软件越复杂,变化越大,不仅会有软件bug,而且对系统进行维护也会增加bug。开发人员应该通过使用圈复杂度来监控他们的函数复杂度。
技巧 3——定期进行代码评审
代码审查已经被证明是减少软件错误的最有效的方法。将同行评审整合到开发周期中对于确保软件质量保持高水平是至关重要的。为了有一个有效的代码审查过程,嵌入式开发人员应该遵循几个关键因素:
将代码审查限制在60个以内
每次评论不要超过400个LOC
至少每周安排一次代码评审(如果您每周生成超过400个LOC,则更多)
技巧 4——需求必须是可追踪的
如果一个需求不能以某种方式被测试和验证,最好是自动化的,那么它就不是一个真正的需求。甚至在开发开始之前,需求就应该被分解成可追踪的测试用例,这些用例可以在以后被用来验证所有的需求已经被满足。当然,需求会改变,会使用不同的设计方法,但是需要有一种方法来追踪软件特性和功能,追溯到产生它们的需求,并证明它们按预期工作。

技巧5——编译没有错误和警告
许多忽视编译器警告的团队和开发人员,有时只有一两个警告需要开发人员深入挖掘,或者是微不足道的,所以它们被忽略了,只是挂在那里。如果编译器不信任代码并给出警告,那么开发人员应该将其视为编译器错误并解决警告。警告是编译器表示不喜欢某样东西的方式。老实说,C编译器喜欢任何东西,所以如果它对某些东西有问题,那么作为嵌入式开发人员我们也应该这样。代码质量意味着没有错误和警告。
技巧 6–静态分析
静态代码分析器是发现嵌入式软件潜在问题的最快方法之一。静态代码分析器可以发现语法问题、潜在的小故障,并识别代码中不可移植的结构,静态分析器甚至可以检查是否遵循了编码标准,将静态分析器集成到连续构建过程中是提高代码质量和最小化软件错误的一个好方法。
技巧7——所有代码都必须经过全面测试
不少中小型企业在没有完全测试软件的情况下就发布产品。这些公司倾向于执行高水平的抽查,以查看系统是否按照他们期望的方式运行,然后将他们送到野外。当大多数读者得知这些公司的产品在该领域遇到问题时,可能不会感到惊讶。作为嵌入式开发人员,我们不能仅仅因为我们没有看到系统行为不当就认为我们的代码工作正常。我们的代码需要全面测试!全面测试意味着:
l 高水平的测试用例已经被验证
l 单元测试已经执行
l 已执行集成测试
l 代码覆盖测试已经完成,以验证每一行代码都在测试期间执行
l 系统跟踪分析,以验证时间、性能和系统行为是正确的,而不仅仅是对用户来说是正确的。
如果一行代码在测试期间没有被执行,就没有办法知道这一行代码是否包含有一天当用户使用系统时会出现的错误。
结论
提高代码质量不一定是一项重大的、昂贵的任务。这些建议很容易实现,甚至可以在几周或几个月内完成。最终结果将是更高质量的软件,提供更好的用户体验,同时降低嵌入式开发成本。
边栏推荐
- gtest从一无所知到熟练使用(2)什么是测试夹具/装置(test fixture)
- 并发网络模块化 读书笔记转
- 做BI开发,为什么一定要熟悉行业和企业业务?
- # 2156. Find the substring of the given hash value - post order traversal
- 《命令行上的数据科学第二版》校对活动重新启动
- DevEco Device Tool 3.0 Release带来5大能力升级,让智能设备开发更高效
- Deveco device tool 3.0 release brings five capability upgrades to make intelligent device development more efficient
- From repvgg to mobileone, including mobileone code
- Xiangjiang Kunpeng joined the shengteng Wanli partnership program and continued to write a new chapter of cooperation with Huawei
- 湘江鲲鹏加入昇腾万里伙伴计划,与华为续写合作新篇章
猜你喜欢

Case sharing | integrated construction of data operation and maintenance in the financial industry

KDD2022 | 什么特征进行交互才是有效的?

Enabling digital economy Fuxin software attends the BRICs high level Forum on Sustainable Development
![[advanced C language] array & pointer & array written test questions](/img/3f/83801afba153cfc0dd73aa8187ef20.png)
[advanced C language] array & pointer & array written test questions
![[early knowledge of activities] list of recent activities of livevideostack](/img/14/d2cdae45a18a5bba7ee1ffab903af2.jpg)
[early knowledge of activities] list of recent activities of livevideostack

Scala下载和配置

Visual task scheduling & drag and drop | scalph data integration based on Apache seatunnel

Redis03 - network configuration and heartbeat mechanism of redis

Use blocconsumer to build responsive components and monitor status at the same time

Bookmark
随机推荐
PMO:比较25种分子优化方法的样本效率
常用的开源无代码测试工具
Solana链上应用Crema因黑客攻击停运
历史最全混合专家(MOE)模型相关精选论文、系统、应用整理分享
GTEST from ignorance to proficient use (2) what is test fixture
HBuilder X 常用的快捷键
Solve the problem of data disorder caused by slow asynchronous interface
TCP protocol three times handshake process
ACM multimedia 2022 | counterfactual measurement and elimination of social prejudice in visual language pre training model
Basic structure of PostgreSQL - table
gtest从一无所知到熟练使用(2)什么是测试夹具/装置(test fixture)
大厂的广告系统升级,怎能少了大模型的身影
How to remove the black dot in front of the title in word document
New intersectionobserver usage notes
Master the use of auto analyze in data warehouse
QT - double buffer plot
NAACL-22 | 在基于Prompt的文本生成任务上引入迁移学习的设置
Interview question 01.01 Determine whether the character is unique
283. Moving zero-c and language assisted array method
Telephone encryption, middle 4 is replaced by * * * *