C#上位机工作感想1(2020.7.1-2021.4.4)

C#上位机工作感想(2020.7.1-2021.4.4)

前言

不知不觉工作已九个月有余了,从刚来公司还是个啥也不太懂得小菜鸟,现在已经是负责两个项目的大菜鸟啦。这大半年的时间内,师傅教给了我很多业务上的知识,自己也在工作和闲暇时间里学到了很多编程知识。对C#语言的底层实现和一些简单设计模式的应用都有了更深的理解。

一、2020年

先来说说项目路线吧,去年七月份刚来公司的时候,接手的是一个大体功能已经编写结束,还未开始进行联调的一个初版软件。大概花了一周多的时间熟悉代码。这个软件比研究生帮老师做的软件更复杂,原有代码各模块之间耦合度比较高,模块代码量大,初看也是很难抓到重点的,后来在调试过程中慢慢得找到了软件的核心逻辑,也就是上位机的通用做法,一个后台线程监控下位机数据状态,根据状态的不同进行相应事件的触发。当时也在看马丁-福勒写的《重构》,利用一些“简单”的变量改名,函数精简,模块抽象操作将原来的主模块划分成几个小模块,调试难度降低,代码读起来也更加流畅。
有个功能是根据不同的枚举量获取不同的字符,原始代码是利用大量的if else语句进行判断,每当新加一个枚举量的时候,就要修改这个if else的判断,很多bug就是这么来的。开始想利用键值对,虽然if else是没有了,但还是避免不了新添加数据时修改键值对。然后看到了C#特性这个语法知识,就学着利用反射特性获取每个枚举量的特性修饰值,精简了几十行代码。
第一个项目大概调试了半年多的时间,很多需求和功能都是在不断摸索,重做了好几次,后来学者运用xml技术将很多功能做成可配置的,方便后面不同用户的需求。
大概在八月份的时候感觉很迷茫,因为公司人都重业务,轻代码,导致自己不知道如何写好代码,如何优化前任代码。问了领导,说的也是云里雾里。后来网上买了几本书,算是很好的解答了我的问题。买的书有《代码整洁之道》、《重构》、《大话设计模式》还有一本国人写的(不太好,就没看了)。把这三本书先大致看了一遍,学到了很多代码设计的表面知识,没办法,先学样子吧。《代码整洁之道》作者对待一些观点比较绝对,我觉得很多东西不用全照着作者所说的来。《重构》这本书写的非常好,对我的代码优化能力有很大帮助。作者举得例子也是深入浅出,让人真正学到了重构的一些技巧。《大话设计模式》主要是因为我看不懂设计模式这本书,就先看设计模式入门书了。这本书写的很简单,很多设计模式举得例子都是让人一目了然的,配合作者风趣的讲解,让人很轻松的就掌握了设计模式基础的知识。还看了《编程的一百零一中方法》,这本书是日本人写的,没有任何示例,是站在代码设计思想的层面写的,前期看了,准备最近一段时间再啃一遍。
在C#学习方面,也是买了《深入理解C#》这本书,这个作者写的内容也是特别好,值得研读。当时学习异步编程是还买了《C#并发编程经典实例》这本薄薄的书,简单看了一遍,很多涉及的是服务器方面的知识,等以后再研读吧。
界面设计方面,买了刘铁猛的《深入浅出wpf》这本书。是从wpf的原理层面写这本书的,虽然没有大量的项目示例,当时每章的内容都是很好的,能让你知其然知其所以然。很多wpf的设计思想可以用在winform的项目中,优化现有代码。

二、2021年

21年开始,工作也有两个月了。从去年11月份便开始承担两个项目的开发任务了,这几个月还是相当忙的。两款的仪器很多地方相似,但又不完全相同。之前分离出来的很多小模块都得到重用,缩短了大量的开发时间。两款软件的业务逻辑层原来是在一个项目中的,我在第调试过程中将第二个软件代码逐渐分离出来,新建一个项目。准备将两部分代码完全分离,后来发现难度太大,自身水平有限,就分离了大部分,好在最后二者的相互之间也没太多干扰。
最近几个月也是一直在加班。写了很多工具小模块,之前看项目配置DataGridView表格时,都是通过粘贴复制修改后将每一个需要显示的属性成员进行绑定的。于是运用反射技术,提取数据成员,然后存储在xml文件中,最后通过修改xml文件来进行DataGridView列的修改操作。也是干掉了上百行的配置代码,代码又优雅了有木有?
接着发现上位机很多调试都需要下位机配合,再一研究,好像也就数据监控那个通讯指令触发的,那我直接进行这个指令模拟不就完事了吗。这样我又开发了数据模拟模块,可以随意设定需要的数据量,极大地提高了调试了效率,减少了很多bug。这个也是在《重构》上学的——完善的测试才是顺利重构的基础。对上一个软件也设计了数据模拟模块,这样就可以对代码进行愉快的重构啦。
这两天在做Excel导出的一个通用模块,原有开发者利用的时offiice自带的模块,那速度,很感人啊,一个报表十几秒。为了提升客户的使用感受,我尝试使用NPOI对原有模块进行扩展,现在基本已经实现差不多了,顺便也是学习了NPOI。速度提升很明显,缩短至一两秒。
还有最近一直在学习wpf和算法的一些知识,算法这里推荐《算法小抄》这本书。为啥学习算法呢,一方面觉得自己算法能力实在太弱,另一方面当是为了跑路做准备啊。想趁着年轻多尝试几次机会,做一做Qt或者Net Core啊,以后的就业面也会更宽一点。

总结

其实现在挺迷茫的,网上都是大把的Java,Python,前端的一些工作机会,涉及到.Net的确实很少,可能这就是国内的氛围吧,无脑跟风。我是不太想去互联网,但是比较向往互联网很多的先进技术。虽然先进的技术都是来自老技术,但是没见识过怎能知道到底啥样呢。以我现在的工作经历来看,基本很难进一些互联网大厂,技术栈差的太多了。所以可以找一个中和的,做一做工业互联网(mes等),也算是用上了现有的经验,同时也是对现有技术栈的一个扩展。另外,也可以尝试做一做Qt上位机,毕竟人家是跨平台,在嵌入式里也是很吃得开的。最后我也想通了,既然选择了做自动化软件这条路,就应该走下去。写好自己现有的,在现有基础上不断拓展,多思考代码架构,多看书,总有一天我会成为自己的大神的。

  • 35
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值