打印
[STM32F1]

读同事移交的程序有感

[复制链接]
楼主: fly1974
手机看帖
扫描二维码
随时随地手机跟帖
21
aolin 发表于 2019-9-10 15:23
非常认同楼主的看法,这种代码做个演示可以,但绝对不是产品上使用的。
不单只楼主同事,我见到过的很多毕 ...

     别污蔑教科书,教科书最多在按键那里狂加delay(), 中断那里都是有强调不能乱来的,计算机专业的教科书都讲了阻塞的概念,主要是制度问题,小公司没有个优秀的技术主管,都是先搞定销售然后搭草台班子。。。

使用特权

评论回复
22
springvirus| | 2019-9-10 19:35 | 只看该作者
现实就是这么的混乱,还是重写吧,将来也好维护

使用特权

评论回复
23
yongwong9901| | 2019-9-10 20:23 | 只看该作者
你确定不是他故意加的诈弹

使用特权

评论回复
24
fly1974|  楼主 | 2019-9-10 20:28 | 只看该作者
本帖最后由 fly1974 于 2019-9-10 20:54 编辑
yongwong9901 发表于 2019-9-10 20:23
你确定不是他故意加的诈弹

不存在这个可能性,说句他听到了可能不高兴的话,他写代码的水平就是这样,感觉要不是他代码写得少,要不就是他写代码功能实现就行,有点bug从不深究的,不考虑完善的!  这个同事两年多一共就写了两个设备的代码,另一个设备的代码和这个风格很一致(1毫秒的定时中断里面有大量的函数执行时间在几毫秒到几十毫秒的,我开始时还奇怪为啥没有中断重入的问题,后来仔细一看,原来是进1mS中断后不清标志位,出中断时才清,所以就不会有中断重入的问题,但是所谓的1MS中断就只能是个大概值了!):
  void TIM3_IRQHandler(void)                   //1ms中断
{         
    //u16 flag=0;                                                        
        if(TIM3->SR&0X0001)//Òç³öÖжÏ
        {   

                sect_strim();                 //2017.04.06         执行时间可能远大于1mS
                if(dq_flag==1)                                  //2019.07.16  add
                {
                  qpshu_dis();              //    执行时间可能远大于1mS
                }        ....
      }
        TIM3->SR&=~(1<<0);//Çå³ýÖжϱê־λ            
}



使用特权

评论回复
评论
gcxzhz 2019-9-11 11:52 回复TA
@1203030117 :同意你的看法 1ms中断就是用来检测这个事件的 既然检测到了可能就要立即执行,所以后面有没有这个中断并不重要,楼主贴出来说 反而认为楼主进入了定式思维,有句话叫法无定法,能解决问题在那种状态下就是最好的结果 
1203030117 2019-9-11 10:18 回复TA
这一块能解释的通,,1ms中断里面的代码 最短时间小于1ms就能解释了,,,这个中断就是专门用来检测处理sect_stirm和qpshu_dis两个模块的,没有检测到模块的事件发生,那就每隔1ms检测一次,检测到了,就处理,,,没那么严重,根据实际情况 
25
NickyGrout| | 2019-9-10 20:54 | 只看该作者
这个工资值不值,老板说了算……
代码质量好不好,重点看产品是否稳定……

使用特权

评论回复
26
R2D2| | 2019-9-10 21:01 | 只看该作者
本帖最后由 R2D2 于 2019-9-10 22:16 编辑

关键是能不能通过测试,能通过你还怕什么呢?没有测试你refact出来的代码搞不好还不如人家呢。

我自以为写的最糟糕的代码是一个设备的配件,甲方项目需求写的还行,但是到现场发现很多需求里面没有写到的东西,甲方非常严格,整机所有可能发生的工况都要自动跑一遍,一次就是20个小时。然后我就根据不符合要求的地方改代码,在甲方那里住了半个月,终于能通过所有工况的测试了,但是代码被我改的一塌糊涂我自己都不认识了。后来我自己想改,但是没有测试条件,整套设备好几千万买不起,但是这个软件在甲方那里运行的非常好,连续采购我这个配件超过10年了。这么烂的代码这么多年甲方居然没说过一个不字也是神奇了。

使用特权

评论回复
评论
icecut 2019-9-11 16:37 回复TA
因为甲方测试严格, 需求不变. 如果甲方提个新需求,你就马上跑路了.不是你代码幸运,而是甲方测试严格,需求定义清晰. 
27
fly1974|  楼主 | 2019-9-10 21:12 | 只看该作者
NickyGrout 发表于 2019-9-10 20:54
这个工资值不值,老板说了算……
代码质量好不好,重点看产品是否稳定…… ...

   这个产品稳定不稳定怎么讲呢,产品刚出了3-4台,我这边看到的是程序里面加了看门狗,当然不是说不能加看门狗,只是我们公司的产品以前就没加过看门狗,以前没有因为死机出过问题(产品都做过EMC和EMS的),后来发现我这个同事在按键扫描单元省掉了一颗芯片,直接从单片机引脚引线接到面膜上,长度大概70公分左右,相当于把单片机引脚当天线用,如果手上带静电比较厉害,单片机就可能在按键被按下时被电死机,所以必须要加入看门狗,但是又不能经常性的复位,所以我猜测他是故意把温度传感器扫描时间设得比较长,1分钟左右,以减少复位几率,这个解决问题的思路,依我来看简直是头疼医头,脚痛医脚了!

使用特权

评论回复
28
fly1974|  楼主 | 2019-9-10 21:17 | 只看该作者
R2D2 发表于 2019-9-10 21:01
关键是能不能通过测试,能通过你还怕什么呢?没有测试你refact出来的代码搞不好还不如人家呢。

我自以为写 ...

   连我们公司研发主管那都一堆意见,你觉得我这个同事的设备算是通过测试了吗?我们研发主管说我这个同事太难沟通,问题记了一堆,但是只有出货急需要改的让我同事改了,其它好几条都是等他离职了交给我改的!

使用特权

评论回复
29
l435799304| | 2019-9-10 21:43 | 只看该作者
额,,,这代码确认不妥当,,,但是再机器上已经验证过能正常工作了。。。。。你就要考虑重构的成本值不值的了

使用特权

评论回复
30
NickyGrout| | 2019-9-10 22:10 | 只看该作者
fly1974 发表于 2019-9-10 21:12
这个产品稳定不稳定怎么讲呢,产品刚出了3-4台,我这边看到的是程序里面加了看门狗,当然不是说不能加 ...

产品不稳定就另说了。综合产品的问题来分析程序中存在的隐患是正确的打开方式

有时候有些很奇怪、不合理的处理,往往是为了解决一些奇怪的问题……这方面要了解,虽然办法不太对,但是出发点是好的

使用特权

评论回复
31
fly1974|  楼主 | 2019-9-10 23:07 | 只看该作者
本帖最后由 fly1974 于 2019-9-10 23:09 编辑
l435799304 发表于 2019-9-10 21:43
额,,,这代码确认不妥当,,,但是再机器上已经验证过能正常工作了。。。。。你就要考虑重构的成本值不值 ...


两个设备,一个已经出了五台,目前收集反馈改进中,一个只是样机阶段,这次好像是机构件开模,样机有变动,还在改!  出了五台的这个设备是老产品的改进型,就是人机界面从面膜按键加液晶屏改为面膜加串口触摸屏,刚开始的第一版PCB是我做的,程序只是从MSP430移植到STM32F103,不是从头搭的,msp430的代码是我给的!

使用特权

评论回复
32
caoenq| | 2019-9-11 08:13 | 只看该作者
fly1974 发表于 2019-9-10 17:57
资深工程师9-10K一个月,我们公司在二三线小城市,薪水差不多就这样了,郁闷的是好长时间不涨了,也没啥 ...

要是二、三线城市,这个工资水平已经很不错了。

使用特权

评论回复
33
YDCMAN| | 2019-9-11 08:53 | 只看该作者
感觉有点乱,应该是没有经过系统的训练,水平有点LOW,你们有代码规范,应该要求按照代码规范

使用特权

评论回复
34
811909| | 2019-9-11 08:55 | 只看该作者
中断里面加个延迟其实也没啥大惊小怪把,虽然是影响实时性,不过很多外部信号检测要求实时性特别高的, 不加系统,很多都是中断加延迟防抖在判断的,当然很多也是用定时器扫描方式。虽然我不这么写,不过从事电子行业很多年,见过不少这样写的,见怪不怪,影响除了实时性也没你说的辣么夸张。不过如果不是很复杂的案子,重写不就得了,没必要抱怨,如果涉及很深的专业知识的,碰到烂代码是很头疼。

使用特权

评论回复
35
aerwa| | 2019-9-11 09:07 | 只看该作者
知易行难,硬件易搭,软件难行。说实在的软件工程这一块工作量更大,考虑的因素更多。不要轻易去否定别人。

使用特权

评论回复
36
nuaabob| | 2019-9-11 09:08 | 只看该作者
你写的代码应该比这个老工程师强,但估计在华为这种大公司资深工程师的眼里同样惨不忍睹,但那又如何,每个人都能找到适合自己的岗位,不是每个人都想成为大师的,与其看别人笑话不如努力提升自己。

使用特权

评论回复
37
菜鸟同学| | 2019-9-11 09:25 | 只看该作者
不要厚此薄彼,多看别人的代码,肯定有学习的地方,每个人都有优点有缺点,写的每一行代码都有原因,你现在写的代码,如果发出来,我也能鄙视的你钻裤裆。所谓本是同根生相煎何太急,都是同行。术业有专攻。社会不只是技术,技术只是一部分。

使用特权

评论回复
评论
kingTek 2019-9-16 16:03 回复TA
这话有道理,心态宽容一点吧,本人有错,改正则好,没必要嘲笑 
38
zgf123456| | 2019-9-11 10:00 | 只看该作者
aolin 发表于 2019-9-10 15:23
非常认同楼主的看法,这种代码做个演示可以,但绝对不是产品上使用的。
不单只楼主同事,我见到过的很多毕 ...

哪本教科书上教在中断里面放延时的

使用特权

评论回复
39
rgjinxuan| | 2019-9-11 11:07 | 只看该作者
我以前也遇到这样一个人  老是讲其他工程师 这个不行   那个不行   

使用特权

评论回复
40
512870372| | 2019-9-11 11:24 | 只看该作者
说白了就是混,懒得改,不一定是水平不行的,工作态度的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则