话说碰到了那种全局变量,指针漫天飞的程序杂破?

[复制链接]
3035|37
手机看帖
扫描二维码
随时随地手机跟帖
hclwj181|  楼主 | 2018-11-1 19:49 | 显示全部楼层 |阅读模式

        最近接手了一个程序,代码总共估计6k行左右,很小的一个代码,可是全局变量占了近600行,结构体指针,全局数组,全局变量漫天飞舞,地址传来传去,最可恶的是特么的一个注释也木有,看了几天,脑袋疼痛中,辞职的心都开始萌生了。
       话说各位大虾们,碰到这种代码怎么破???

相关帖子

mohanwei| | 2018-11-1 20:21 | 显示全部楼层
没什么好办法,不想重写的话,就多花点时间和耐心,边读边加注释,不改代码的前提下先提高可阅读性。

使用特权

评论回复
评论
xyz549040622 2018-11-4 07:21 回复TA
@tyw :同意t叔! 
小鱼儿1045 2018-11-2 08:47 回复TA
@tyw :现在的人缺乏那一辈人技术人的耐性和稳重,都比较浮躁,包括我自己~ 
mohanwei 2018-11-2 08:43 回复TA
@tyw :T叔威武! 
tyw 2018-11-2 08:17 回复TA
好码农最不缺的就是时间和耐心,哈哈,94年读过一串Z80汇编,32k长,每一行都注释,台湾小老扳看了称道象看小说 
qinlu123| | 2018-11-1 21:21 | 显示全部楼层
幸亏我不是程序员

使用特权

评论回复
caijie001| | 2018-11-1 21:51 | 显示全部楼层
心疼你3秒。。。。。3.。。。2.。。。。1.。。。。

使用特权

评论回复
cjseng| | 2018-11-1 22:28 | 显示全部楼层
弄清功能,自己重写

使用特权

评论回复
mszfszrrr| | 2018-11-2 08:23 | 显示全部楼层
求大神讲解,谢谢各位楼主

使用特权

评论回复
hclwj181|  楼主 | 2018-11-2 09:06 | 显示全部楼层
cjseng 发表于 2018-11-1 22:28
弄清功能,自己重写

这个东西是以前公司一个人做失败的项目,同样的东西达不到别人那种效果,这个程序是个老攻城狮写的,虽然程序写成这样,不过他确实是那方面的专家,搞了很多年

使用特权

评论回复
评论
xmar 2018-11-5 10:09 回复TA
原来老工程师程序是不是用了状态机?看起来程序乱转,其实有规律可循? 
hclwj181|  楼主 | 2018-11-2 09:10 | 显示全部楼层
mohanwei 发表于 2018-11-1 20:21
没什么好办法,不想重写的话,就多花点时间和耐心,边读边加注释,不改代码的前提下先提高可阅读性。 ...

全局变量写得比linux还linux,关键注释木有。目前表示只能看懂函数功能,全局变量是真表示看不大明白

使用特权

评论回复
mohanwei| | 2018-11-2 09:18 | 显示全部楼层
hclwj181 发表于 2018-11-2 09:10
全局变量写得比linux还linux,关键注释木有。目前表示只能看懂函数功能,全局变量是真表示看不大明白
...

没那么神奇,用C想写成那样基本是不太可能的(脑子厉害的不屑于,脑子不够厉害的自己都整懵了)。很可能是写完后由于各种因素,故意把代码清空注释,再把局部变量再全部拷贝出去,然后再把这些“局部变量”再挪位置打散————我之前就接过这样的一个活,还原后发现代码还是很规整的。

只要保证原来的代码编译下载是正常的,还原只是个时间问题。

使用特权

评论回复
评分
参与人数 1威望 +15 收起 理由
tyw + 15 天机不可漏哦,哈哈
hclwj181|  楼主 | 2018-11-2 15:23 | 显示全部楼层
mohanwei 发表于 2018-11-2 09:18
没那么神奇,用C想写成那样基本是不太可能的(脑子厉害的不屑于,脑子不够厉害的自己都整懵了)。很可能 ...

if(gprsinfo.receledinfo1.infono<LEDINFONUM-1)
{
        ledinfohead.info[gprsinfo.receledinfo1.progno].fileaddr[gprsinfo.receledinfo1.infono+1]=ledinfohead.info[gprsinfo.receledinfo1.progno].fileaddr[gprsinfo.receledinfo1.infono];
        ledinfohead.info[gprsinfo.receledinfo1.progno].fileaddr[gprsinfo.receledinfo1.infono+1]+=(uart2info.recelen+4+255)/256;
}                                                
ledinfohead.info[gprsinfo.receledinfo1.progno].filesize[gprsinfo.receledinfo1.infono]=uart2info.recelen+4;       
ledinfohead.info[gprsinfo.receledinfo1.progno].infostyle[gprsinfo.receledinfo1.infono]=gprsinfo.receledinfo1.infostyle+1;
截取其中某一段,整个程序几乎类似这样的

使用特权

评论回复
评论
VectorGD 2019-1-16 17:22 回复TA
我写的更长,哈哈哈,我觉得挺好的 
dukedz 2018-11-2 20:04 回复TA
linux 代碼風格規定每行不可以超過 80 個字符。雖然我偶爾會超出一點,但像他這麼長還是非常反對的。 至少算不上好代碼。。。 
cjseng 2018-11-2 17:42 回复TA
拆开拆开重写,否则我的脑子转不过弯来 
mohanwei| | 2018-11-2 15:44 | 显示全部楼层
hclwj181 发表于 2018-11-2 15:23
if(gprsinfo.receledinfo1.infono

闹半天原来是你自己水平问题啊……

这种代码算是很好了,看不惯的话,你可以把结构体类型、成员都重新命名为自己喜欢的

使用特权

评论回复
hclwj181|  楼主 | 2018-11-2 16:10 | 显示全部楼层
mohanwei 发表于 2018-11-2 15:44
闹半天原来是你自己水平问题啊……

这种代码算是很好了,看不惯的话,你可以把结构体类型、成 ...

好吧,水平太差,不懂大神们写的代码

使用特权

评论回复
jjjyufan| | 2018-11-2 16:48 | 显示全部楼层
最讨厌别人的代码没注释,
自己的代码却懒得写注释
这就是大多数现状

使用特权

评论回复
cjseng| | 2018-11-2 17:36 | 显示全部楼层
621565bdc1a9cab171.png
看,我写的代码,很幼稚是不是?但是我自己能看懂。

使用特权

评论回复
评论
dukedz 2018-11-2 20:01 回复TA
代碼風格有巨大的進步空間。 
mohanwei| | 2018-11-2 17:52 | 显示全部楼层
hclwj181 发表于 2018-11-2 16:10
好吧,水平太差,不懂大神们写的代码

有点面向对象编程的意思,也许是前一个项目经理要求的编程风格呢。

使用特权

评论回复
hclwj181|  楼主 | 2018-11-2 18:12 | 显示全部楼层
cjseng 发表于 2018-11-2 17:36
看,我写的代码,很幼稚是不是?但是我自己能看懂。

这年代你这样良心的码农少了

使用特权

评论回复
hclwj181|  楼主 | 2018-11-2 18:14 | 显示全部楼层
mohanwei 发表于 2018-11-2 17:52
有点面向对象编程的意思,也许是前一个项目经理要求的编程风格呢。

面向对象会这样,我是没见过全局变量行数占到总代码行数百分之十的程序,这是第一次

使用特权

评论回复
hclwj181|  楼主 | 2018-11-2 18:15 | 显示全部楼层
jjjyufan 发表于 2018-11-2 16:48
最讨厌别人的代码没注释,
自己的代码却懒得写注释
这就是大多数现状

有道理,注释但是其次,主要是变量太多了,给绕晕,要想理解透感觉太难了

使用特权

评论回复
mohanwei| | 2018-11-2 19:13 | 显示全部楼层
hclwj181 发表于 2018-11-2 18:14
面向对象会这样,我是没见过全局变量行数占到总代码行数百分之十的程序,这是第一次 ...

别的没见过,不好说;
起码你贴的这段,实际就两个“全局变量”:gprsinfo和ledinfohead,下标后面跟的都是它们的成员,这段代码没有注释,我也看懂了……
linux内核代码也是这样的,代码能表达清楚的,就不会再增加无用的注释。

以前看过一个程序猿经典代码笑话,里面有两段是这样的
if(num==1)//if num is 1 than exec foo()
{
    foo();
}

return(1);//at the end of this fun return 1

使用特权

评论回复
hclwj181|  楼主 | 2018-11-2 19:16 | 显示全部楼层
qinlu123 发表于 2018-11-1 21:21
幸亏我不是程序员

每次看到我看不懂的别人的代码,我就在想,我是不是不适合做码农了???

使用特权

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

本版积分规则

72

主题

720

帖子

9

粉丝