不吐不快,前任一个量产产品的代码,只有一个5000多行的C文件......瞬间泪崩!!!...

674f32cb67043d1a32aec9371cfa0569.png

作者:刘工,排版:晓宇

微信公众号:芯片之家(ID:chiphome-dy)

本人工作多年,也算是个小司机了,见到过很多习惯非常不好的代码,别人阅读起来可以说是绞尽脑汁,非常令人费解。最近换了份工作,打开前任的代码,5000多行一下到底,这还真是第一次亲身经历。

bc5676f8bcc7cdff3ce97f281c37eded.png

先简单介绍产品的功能:

产品主要是控制电机的,输入电源220V,采用STC89C58RD+和STC12C作为主控芯片,外设及功能主要有12864液晶,实时时钟DS12C887,继电器控制,红外遥控器接收,6个按键,EEPROM,运放采集电流互感器电流,作为电机接入故障反馈。

开始吐槽

代码开头部分

881eee4e996f9f30b60033ead730b62f.png

部分变量声明,好家伙,密密麻麻的,没有注释,反正随便定义变量不要钱,想怎么定义就怎么定义,什么ss,sg,ds,hf0,鬼知道这是什么意思 cc855063b1e817d075441f9acd2737c7.png

56a5c7a682c279b814837e272673ecea.png

部分函数声明,可以预想的到,也是堆在一起

a1436a8e98efdbd65b6998d44add3ee8.png

最后看看结尾,5375行,都在一个C文件里面,厉害了我的哥,程序中也是很多delay,可能这哥们会说,我实现功能就行了啊,又不是不能用,呃......好吧,你赢了!

0fea4dff54d95b32f09e90fe57785ec9.png

代码量:

1838900642a94de74a7fc6ee9009e4e3.png

最后再看一下工程目录:

eb52190fefe4d11ebf301bb77f54a0b9.png

一个文件直接到底,没有任何的头文件以及分类,当我看到这个文件的时候,瞬间泪崩!!!下图展示代码臃肿跟代码精简的区别。

b63eea4eea80f1f18fd038cd5c94c1b0.gif

下面分享一些好的代码习惯:

c0d0b07af34c16851af69935ee54fb99.png

很强大!低耦合高内聚的MCU实用软件框架

7969734517d91cd9f628591c73e20ab0.png

别用代码逼死你的队友

d8dbd74e8b89c2b5b08b5c73f3bb372a.png

一些技巧,如何更高层次编写优质嵌入式C代码

b0c3485ffb2265b0cd4ac88b054b3592.png

状态机——单片机的万能语言(附代码

76a917568e3e81b20ddc696391a55cd3.png

实例分析】让你的软件飞起来,算法不一样,速度可以从120秒变化为0.5秒

af028605a619adb866cc26232318f992.png

如何写出好代码?附资深码农的个人代码规范

2a44fcd69f4c4c098065dcd6fb9fac1c.png

3年的MCU工程师就写出这样的代码?

6423868e4e3cda3dd368e215408aa842.png

搬上小板凳,听嵌入式大牛讲解硬核单片机编程思想!

b17887f9cd1ba62185415828f611d7aa.png

咱设计程序是先考虑架构,还是拿起键盘就是干?

d860189ce4df4e175ad1ac41b4a6bf13.png

完全由C编写,高度可移植,超级牛逼的菜单架构!

9c7dc980fe1e52293669a81067bd258c.png

完全由C编写,高度可移植,超级牛逼的按键驱动机制!

3123652d05575cc620f14b9b78490fe9.png

完全由C编写,高度可移植,超级牛逼的软件定时器!

91b813a64b99b8945d7032a9b7717461.png

论一个程序员的编程修养(精品好文,建议认真品读并实践)

评论 23 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

芯片之家

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值