美文网首页
嵌入式开发之代码重构

嵌入式开发之代码重构

作者: 梦在白云之上 | 来源:发表于2024-06-20 23:10 被阅读0次

0. 缘起

  以前看别人吐槽代码尸山,还没有感触。最近由于项目需要,需要对功能进行大幅扩展,新同事还在学习中,所以重构。其实需求也不是很复杂,做一个设备管理软件,涉及诸多外设接口,北向接口要求同时支持GUI、WEB、SNMP和Netconf等,多用户竞争,以及多优先级下配置的生效问题。

1. 基础设计

1.1 软件设计松耦合

  嵌入式的开发,与严重受限的资源相对应的是对可靠性的超高需求,两年平稳运行是基本需求。随着用户对交互性需求的提升(软件定义网络要求具有全网可配,高可视化)。各功能模块的松耦合,是产品稳步迭代的重要基础。

1.2 低自编代码

  嵌入式的开发,拿来主义是常态。一堆成熟的开源项目任君采撷,还贴心搭上支撑服务。尽可能减少自写代码,是提高编程效率,保障软件运行稳定的基础(这两天扒了下新同事的代码,运行时间的考量很神奇,可以不厌其烦的打开关闭外设,寄存器的置位清零不设置冗余时间),重构也不算重新开发,至少数据交互协议省时间了。

1.3 进程间通信

  没啥特别的,共享内存、消息队列、信号量大体够用。内存溢出和超时导致的开销增长,已经躺过无数的雷了。本次重构中,以共享内存作为信息发布平台,以消息队列作为交互使用,信号量保证操作的原子性。

1.3 资源竞争

  接口可以很多,使用接口的用户也可以很多,外设老爷爷主打一个佛系,硬件资源竞争跟我外设有什么关系。他强任他强,清风拂山岗。他横由他横,明月照大江。如果你觉得外设不对,一定是你打开方式不对。外设的管理采用订阅方式,知之为知之,不知为不知,是知也。对管理数据进行归纳分类,并与外设接口进行映射;对用户需求进行统计分析,并进行集中采集和发布。

2. 开发难点

2.1 前事不忘后事之师

   还好自编代码只有8K,开发的起点有点回退(顺便重温了下四年前的代码)。源代码还是有点映象。全新的软件架构,需要引入全新的数据结构,派生了更多的变量(有全局的、有局部的)。重构中间有很多事情打断,事实上记忆出现混淆和遗忘。

2.2 历史残余

   GUI、WEB都是独立项目(GUI最早是PyQt开发,bytes完美对接C语言结构体;WEB引入了JSON),两者的数据需求、指令约束也完全不同的。代码重构,虽然采用订阅方式搞定外设,但多应用、多用户下的订阅发起和关闭,需要新的维护。采用内存数据库与视图,搞定了维护,多应用下的交互指令统一,依然是一个问题。为提高指令的执行效率,引入hash。一坑还未平息,一坑又来清洗。

2.3 查漏补缺

  时代在变,需求也在变。账户安全、数据安全需求凸显,RADIUS、安全加密、
全寿命周期的状态回溯,引入新特征,复用老特征。

2.4 维稳

  好的软件产品是设计出来的,更是测试出来的。目前的测试也主要是功能的测试,进而追溯长时间运行后内存开销情况。长期稳定性测试欠缺(想想设计寿命二十年的产品,多长时间的测试视为长期稳定),压力给到了设计。

相关文章

  • 代码重构利器

    使用重构件(Codemod)加速 JavaScript 开发和重构代码重构利器 —— jscodeshift 对于...

  • 趣图:做程序员五年状态变化

    趣图:开发和测试是如何对待代码的 趣图:高级开发人员重构代码

  • 代码重构专题(转载)

    代码重构(一):函数重构规则代码重构(二):类重构规则代码重构(三):数据重构规则代码重构(四):条件表达式重构规...

  • Android开发中不可忽略的代码规范

    Android开发中的代码规范 最在重构自己的项目的时候,发现自己在以前的开发中命名不是非常规范,给现在的代码重构...

  • sjs-clc 代码行数统计命令开发手记

    上周向领导建议对项目进行重构,重构的一个回报之一就是代码复用,减少代码量,提高开发效率,现在重构工作快要结束了,作...

  • 《重构-改善既有代码的设计》Martin Fowler

    What:何为重构 使用一系列重构准则,在不改变「软件之可察行为」前提下,优化代码结构。 软件开发的时间会分配给两...

  • IOS开发之代码规范与重构

    最近学习到了ios开发的一些代码规范技巧,在此记录一下。一、Rename对当前文件夹下某个文件名进行重命名 作为一...

  • 2019-03-09

    《代码之美》 《代码之殇》 《重构-改善既有代码的设计》 《程序员修炼之道 从小工到专家》

  • 请求都是用RAC

    R�eactiveCocoa代码实践之-RAC网络请求重构前言RAC相比以往的开发模式主要有以下优点:提供了统一的...

  • 编程技能

    基于接口设计与编程 Java代码优化 精练代码:一次 Java 函数式编程的重构之旅 软件开发之技能梳理 一句话的...

网友评论

      本文标题:嵌入式开发之代码重构

      本文链接:https://www.haomeiwen.com/subject/wldhcjtx.html