当前位置: 首页 > news >正文

Qt 上位机开发:最近一年关于软件架构的一些思考

最近开发的Xrd设备软件功能越发的复杂的,不仅要支持机械臂自动化测量、也要加原位系统、现在又要加入类似测量计划的功能(就是制定一批测量任务,测量时可以修改角度、电流、电压等参数),之前的那套通过配置文件在软件初始化时创建业务逻辑的思路可能就不太好用了,想了几天,通过在测量Command中使用策略模式来进行测量模式的解耦是个好的办法。实现可能半天的时间,但是想这个却花了我大概两天的时间。刚好好久也没写博客了,就借着这个机会写一篇最近一年的工作感悟吧。

1.工作经历

  • 自己从校招开始就进入了谱育科技。三年的时间里,我先后做了两年软件开发和一年算法开发,主要利用近红外光谱技术进行水质污染物检测。刚参加工作时,对各种新技术、新语法都充满了好奇,总想着把最新的东西用到项目里,也因此被领导批评过,当时不懂,现在渐渐理解了。软件工程首先追求的是稳定、可维护和团队协作,而不是单纯地追求技术的新颖。代码规范、项目管理、需求评审、版本管理这些看似不起眼的东西,反而成为后来受益最大的财富。离开之后我才发现,大公司带给我的不仅仅是技术,更是一套正确的软件工程思维。
  • 然后就是进入合肥这边什么智控了,干了三年,被PUA了一年,最后觉得干下去会影响自己的身体健康,就换了个工作。这段经历真正让我深入接触了 Qt,也让我开始思考如何设计一套能够长期演进的软件架构。随着项目数量越来越多,我逐渐把之前学习过的设计模式、重构思想以及分层设计真正应用到实际项目中,并不断沉淀出属于自己的上位机开发框架。采用了配置优先、工厂模式、反射、命令模式、策略模式等思想,能够兼容多个型号的设备,也顺利经受住了现场项目的考验。但那时对于多线程的了解还不够深刻,所以对于多线程的使用也是非常保守,原则就是能不用多线程就不用多线程,在一些场景下界面会卡顿。
  • 最后就是现在的公司,这半年的感受就是,氛围比较轻松,制度很少,需要自己主动去推进项目,写代码写起来很有劲,甚至脸上的痘痘都少了(可能是在上家公司太压抑了)。接触到了更加复杂的 XRD 设备研发。相比之前的项目,软件复杂度又提升了一个层次,不仅涉及高精度运动控制、面阵探测器数据处理、德拜环矫正、多设备协同,还需要支持机械臂自动化、原位实验以及越来越复杂的测量流程,可以说是最近及奶奶软件设计难度的巅峰之作了。这些业务不断推动着软件架构持续演进,也让我开始重新思考框架设计的边界。之前沉淀的框架仍然能够继续使用,但随着业务的发展,也在不断补充多线程通信、设备状态监控、缓存优化以及界面设计规范等内容。最近新增的测量计划功能,更让我意识到原有基于配置文件生成业务逻辑的方式已经难以满足复杂需求,这也是我重新思考命令模式与策略模式职责划分的原因。
  • 技术方面,也是从前期的C#到现在的Qt,另外经常会用python做一些数据分析,比如说最近的Xrd数据拟合矫正的算法,但是先从python上实现优化后再移植到Qt上的,python在做数据处理和算法原型方面还是强的。

2.上位机框架的完善

  • 上家公司就已经创建出这套框架了,原位之前用的是C#,里面对于反射、异步等技术支持的都很完善,所以刚在Qt上使用的时候还踩了不少坑。当时的业务比较简单,每个型号的设备就支持两种测量模式,分别书数据采集和样品测量。所有不同业务的逻辑都写在了配置文件中,然后打包在Qt的资源里。当时用到多线程的地方也就算法处理那一块,设备监控啥的都在主线程,优点是稳定,缺点是会卡。主要是应为当时对Qt的多线程了事件循环什么的了解的不够深刻,一直以为Qt对象不能使用多线程进行操作,现在想想还是要结合Qt的事件循环机制来看待,有事件循环的多线程需要谨慎看待,没有事件循环的其实和普通多线程差不多。
  • 这家公司也是继续沿用这套框架,在使用过程中也借助Qt的多线程+事件循环机制降低了一些通讯订阅的复杂度,完善了modbus多线程调用的逻辑(其实就是加了互斥锁)。另外也利用多线程和缓存技术对modbus点位读写做了很大的优化,现在modbus数据读取可谓是非常丝滑。还有就是对上位机的导航、控制、数据显示等界面做了一套设计规范,整个软件看起来更加简洁了,这里安利一本《认知与设计 理解UI设计准则》,看看对我们这种业余设计师还是优点启发的。
  • 后续要做的就是要完善程序报警相关功能,还有就是基于事件机制的命令执行逻辑,最近做的新项目可以尝试以下看看效果。
  • 之前做的一张UML图:

3.对AI的思考

最近几年AI写代码也是大行其道,前阵子Linus还在吐槽说AI写的代码难以维护,Linux代码审核比较烦。我是和大佬的观点一致,如果完全放弃架构设计,把AI生成的代码不断堆积到项目中,项目最终很容易演变成一个难以维护的系统。AI可以帮我们做一些重复性的活,也可以和我们商量架构的方案,但是不能替代我们的思考过程,主动权还是要掌握在自己手中。平时还是要多看看设计模式、计算机原理、重构等基础书籍,并且在编程中不断内化这些技能,要不然被AI替代是早晚的事。

4.关于未来

最近2年研究了很多关于价值投资的东西,也看了很多巴菲特、段永平这类大佬也书籍和视频。特别是段永平说的那句:“做对的事情,把事情做对”,对我的人生规划有很大的影响。继续深耕仪器仪表领域,不断完善自己的上位机开发思想,在这个细分行业构建属于自己的护城河,从而获得一份不错的薪水。在投资上投资红利低波这类适合普通人的指数基金,为十年后的自己和家人提供另一份稳定的现金流。最后就是继续保持一个对技术的热爱的心,成为一个受人尊敬的程序员!之前不懂如何做对的事情,现在渐渐懂了,很多事情你从十年的角度来看,你就知道是对还是错了,发现错了要及时停止,慢慢的就能把事情做对了。软件架构如此,投资如此,人生也是如此。真正重要的不是一次做得多漂亮,而是不断修正方向,在正确的道路上持续积累。

http://www.jsqmd.com/news/1114352/

相关文章:

  • LangChain与Agent实战:核心组件与面试技巧
  • VoiceFixer:3分钟让受损语音重获新生的AI音频修复神器
  • 客户服务与客户支持的区别:为何企业需分清
  • ComfyUI-Impact-Pack V8:终极AI图像增强与语义分割解决方案
  • 如何轻松下载B站4K高清视频:bilibili-downloader完整指南
  • 软考落户实操手册:3步锁定资格、5类材料避坑、7天完成申报(附2024最新窗口期提醒)
  • KimiClaw本地AI助手安装与实战指南:零代码接入Kimi API
  • 如何快速修复Palworld存档损坏:终极数据转换工具完整指南
  • HsMod:专业级炉石传说游戏增强插件完全指南
  • R3nzSkin国服换肤工具:免费解锁英雄联盟所有皮肤的秘密武器
  • 多维数据聚合实战:从OLAP立方体到实时指标矩阵
  • 软考中级→高级→系统架构师 vs HCIA→HCIP→HCIE:双轨成长路线图(附2024通过率与平均备考时长)
  • Claude Code 六种权限模式详解:从 “事事弹窗“ 到 “全自动放行“
  • 继续教育学分被退回?揭秘评委会2023年驳回率高达37.6%的6个隐形雷区(附官方复核申诉模板)
  • 软考与华为认证路径全拆解,从报名周期、考试难度到续证成本,一文看透隐藏成本!
  • VinXiangQi:基于深度学习的智能象棋辅助工具完整指南
  • 终极指南:5步轻松掌握原神抽卡记录导出与数据分析完整流程 [特殊字符]
  • 【软考人必看】登记有效期永久≠自动生效!资深评委会专家亲授:4步完成合规登记,避开3类常见驳回陷阱
  • Gemini 3.0 Pro免费调用实测:7个稳定可用API渠道详解
  • 抖音下载神器:5分钟掌握无水印批量下载完整教程
  • OpenClaw私有部署实战:Node+Ollama+MySQL全链路踩坑指南
  • 软考副高评审全流程拆解:从材料准备到答辩通关的7个关键节点,错过第4步90%被退回!
  • herdr:给 AI 编码 Agent 的终端多路复用器,让多个 Agent 同屏协作 | Github Daily
  • HsMod终极指南:55个功能全面解锁您的炉石传说游戏体验
  • 3个核心技巧:让Video Download Helper成为你的视频下载专家
  • 计算机Java毕设实战-基于 SpringBoot 的 “图书森林” 校园图书共享借阅平台的设计与实现 基于 SpringBoot 的高校共享图【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 终极炉石传说插件HsMod:完全免费的游戏功能增强工具
  • 软考高项和PMP考试难度真相:不是题难,而是你没看懂这4个隐性门槛(附2023真题通过率反推分析)
  • 如何用Universal Pokemon Randomizer ZX打造你的专属宝可梦冒险
  • 软考高级证书含金量黑箱揭秘(仅限内部学员披露):为什么92%的系统架构设计师持证者3年内晋升技术总监,而信息系统项目管理师仅41%?