lzchuo 发表于 2014-8-12 10:20:19

1万5千行的C代码,要多久能看懂?

       代码量:1万5千多行;编程语言:C语言;只知道产品大概功能和原理图,没有相关说明文档,注释很少,无操作系统。
像这样的条件,大家觉得,
1. 能在上面正确修改功能要多久时间?
2. 完全看懂要多久时间?

techbaby 发表于 2014-8-12 10:25:34

看代码风格,好的架构和注释,后来者可以很快上手,否则满满都是泪。

techbaby 发表于 2014-8-12 10:26:31

1.5万行,代码量还不算多,我的代码基本都在5000行以上,加上注释,基本都上万。

黑夜之狼 发表于 2014-8-12 10:27:12

问写这个程序的人吧

zhugean 发表于 2014-8-12 10:34:43

就像是一本书,可能是中文的,一个月看完,可能是英文的,半年看完,也可能是爱斯基摩文的,一辈子都看不完:)

lzchuo 发表于 2014-8-12 10:53:04

原作者已找不到,只能靠自己了

guesser 发表于 2014-8-12 10:54:45

努力吧,这个只能靠自己了

Robin_King 发表于 2014-8-12 10:56:22

一周应该没什么问题吧?

lzchuo 发表于 2014-8-12 10:57:32

架构一般,子函数动则6,7百行,不像UCOS那样清晰明了
大家给个参考时间,多久保险点?

jeep 发表于 2014-8-12 10:59:43

以前网上有个视频一个星期学会单片机。靠{:lol:}

laujc 发表于 2014-8-12 10:59:52

没有其他事情,一般一周够了。

iquer 发表于 2014-8-12 11:05:50

1万5千行只是主框架还是包括外围设备的驱动程序?对外围器件了解的话应该很快,不然就只能看个大概了

lzchuo 发表于 2014-8-12 11:11:11

包括外围设备驱动程序,但不包含C库函数

zhudadragon 发表于 2014-8-12 11:11:18

你的是c的还好,我的还汇编耶,完全没注释,完全是折磨+痛苦,还真想自己重新开发。

ExtremeFly 发表于 2014-8-12 11:12:00

用Source Insight你懂的{:lol:}

lzchuo 发表于 2014-8-12 11:15:56

ExtremeFly 发表于 2014-8-12 11:12
用Source Insight你懂的

这个软件我也在用

techbaby 发表于 2014-8-12 11:17:36

lzchuo 发表于 2014-8-12 10:57
架构一般,子函数动则6,7百行,不像UCOS那样清晰明了
大家给个参考时间,多久保险点? ...

子函数动则6,7百行?

只能说你苦逼了,我一直觉得能TM将一个函数写到100+行的都是牛(2)人(B)。

zuu0 发表于 2014-8-12 11:19:01

这个真不好说,写的乱乱的,你一个月也搞不懂,子函数什么的都模块化很强的,一个星期就够了

结合硬件,先搞懂硬件如何实现,再看代码,会轻松多了,光看代码,很累。还搞不清楚

y595906642 发表于 2014-8-12 11:20:11

还不如重新做代码了,核心的算法部分找出来抄抄就行

xjjiang 发表于 2014-8-12 11:20:37

这个还真帮不了你,除非给代码大家看看

efen 发表于 2014-8-12 11:20:39

两个月,参考

lzchuo 发表于 2014-8-12 11:22:08

现在也是满满一头的汗珠

J8688 发表于 2014-8-12 11:23:26

能不能看你懂一是看行数的,有两个关键,一对这个程序的产品功能有多少理解,如果有多少理解,再结合程序的话,1.5万行不算什么。另外,程序的架构,如果子程序的独立性很强的,那么分块去摸索,要弄懂也不算很难。如果有注释 就更好了

smartmeter 发表于 2014-8-12 11:23:59

没有写程序的上讲一下结构,还是很有点麻烦的

bailao99 发表于 2014-8-12 11:25:38

如果与硬件无关,一个月可搞定

lzchuo 发表于 2014-8-12 11:33:17

与UCOSII相比,UCOSII,5千多行,有书籍讲解代码,大家觉得完全看懂要用多久时间?
项目1.5万行,
劣势:
          1.代码多些,
          2.架构没UCOSII那么清晰明了,
          3.子函数模块化没UCOSII那么精简
          4.没相关资料说明文档,注释少
优势:
          1.数据结构也没UCOSII那么复杂,链表没有,结构体也不太多,
          2.算法也没有UCOSII那么高深
如果非要给自己定个时间,觉得多久合适?

lzchuo 发表于 2014-8-12 11:36:28

J8688 发表于 2014-8-12 11:23
能不能看你懂一是看行数的,有两个关键,一对这个程序的产品功能有多少理解,如果有多少理解,再结合程序的 ...

有道理,先从产品功能入手

lzchuo 发表于 2014-8-12 11:37:18

zuu0 发表于 2014-8-12 11:19
这个真不好说,写的乱乱的,你一个月也搞不懂,子函数什么的都模块化很强的,一个星期就够了

结合硬件,先 ...

有道理,先把外围设备搞清楚

lzchuo 发表于 2014-8-12 11:40:11

techbaby 发表于 2014-8-12 11:17
子函数动则6,7百行?

只能说你苦逼了,我一直觉得能TM将一个函数写到100+行的都是牛(2)人(B)。 ...

是啊,我自己写都是一个函数一个小功能尽量小,一般不超过100行,

lzchuo 发表于 2014-8-12 11:41:17

Robin_King 发表于 2014-8-12 10:56
一周应该没什么问题吧?

莫非你就是传说中的高手???

nazily215 发表于 2014-8-12 11:41:21

用SI跟代码,考察你能力的时候来了

wxfje 发表于 2014-8-12 11:45:03

这个就不好说了,主要看架构和注释怎样了

mhw 发表于 2014-8-12 11:45:15

先clean一下,再rebuild一下,下载,看功能是否完整正常。正常后再考虑下一步

没必要看懂,你只需要用ultraedit根据需求找到相关代码段,看一点点就够了。

如果需求变动太大,再深入点阅读,不行就重写

rootxie 发表于 2014-8-12 11:50:00

重写不太可能,毕竟一个产品的东西,测试一大堆东西就来了,你想重写,人家测试部也不给你测,写完你的东西毫无价值,最好还是顺着原代码缕缕吧,垃圾也忍吧

lzchuo 发表于 2014-8-12 11:51:41

mhw 发表于 2014-8-12 11:45
先clean一下,再rebuild一下,下载,看功能是否完整正常。正常后再考虑下一步

没必要看懂,你只需要用ultr ...

有道理,先把要修改的地方看明白,然后再慢慢深入研究

lzchuo 发表于 2014-8-12 11:53:27

rootxie 发表于 2014-8-12 11:50
重写不太可能,毕竟一个产品的东西,测试一大堆东西就来了,你想重写,人家测试部也不给你测,写完你的东西 ...

是啊,哪敢重写啊,只能先熟悉一下,在基础上修改,等到完全掌握了,再优化了

myxiaonia 发表于 2014-8-12 11:54:01

J8688 发表于 2014-8-12 11:23
能不能看你懂一是看行数的,有两个关键,一对这个程序的产品功能有多少理解,如果有多少理解,再结合程序的 ...

确实如此
从代码摸索产品的行为,是程序设计的逆向过程,非常的麻烦
对产品理解后,是设计的过程,你还可以比较你和原作者的想法谁更好

建议搞懂产品再搞代码吧

lzchuo 发表于 2014-8-12 11:55:32

是的,方法往往比努力更重要

3DA502 发表于 2014-8-12 12:05:32

只喜欢看代码水平比自己好的人的代码,赏心悦目

jacky_yhy 发表于 2014-8-12 12:13:04

找原版硬件,直接上机断点运行,妥妥的。板子运行的过程就是原作者思考的过程。

cshp138 发表于 2014-8-12 12:29:24

建议你直接自己重新写,来实现产品功能

lzchuo 发表于 2014-8-12 13:29:33

jacky_yhy 发表于 2014-8-12 12:13
找原版硬件,直接上机断点运行,妥妥的。板子运行的过程就是原作者思考的过程。 ...

有道理,多谢

YZDREAM8 发表于 2014-8-12 16:26:44

产品没有完全弄清楚的话看懂代码有时很难,甚至是不可能的。

EMC菜鸟 发表于 2014-8-12 16:33:33

只问一个问题:为什么原作者找不到了?

只有一个建议:如果换着我,天塌下来也特木的不会去改别人的程序!

lzchuo 发表于 2014-8-12 16:46:31

写程序的人跳了,能找到估计也不会理吧,也没见过
项目交给你了,难道你要说:本人从来不改别人的程序?或者说本人搞不定,找别人吧?

lzchuo 发表于 2014-8-12 16:50:25

任务还是要接,只是说能有一个比较合理的时间评估,大概多长时间可以搞定,有什么好的方法可以借鉴

wkman 发表于 2014-8-12 17:00:59

{:titter:}操作下产品实物,功能,,,翻翻硬件pcb,,,,然后,,,重写代码

dzmcs 发表于 2014-8-12 17:58:23

如果只是改功能,大概看看,加了断点立马可以上手,如果看懂,你那个超过五百行代码的函数估计就够折腾的了。以前改过一个几百行代码,几十个goto的函数,一直到最后重新写都没有完全看懂,期间好几个月。

czzhouyun 发表于 2014-8-12 18:13:52

一周吧,6 7百行的子程序,没多少子程序么,确定下基本功能,画个框架出来,再说了你又了解产品基本功能,还不是小意思,改更快,有个两三天就可以改了,完全不需要全看懂

qwerttt 发表于 2014-8-12 20:48:48

一个.c 1W5千行吗?呵呵

esdart 发表于 2014-8-12 20:56:27

我觉得还是自己从头开始吧

EMC菜鸟 发表于 2014-8-12 21:02:20

lzchuo 发表于 2014-8-12 16:46
写程序的人跳了,能找到估计也不会理吧,也没见过
项目交给你了,难道你要说:本人从来不改别人的程序?或 ...

如果公司强加给我,可以改,但先声明,本人不对产生的后果负责!

jz120wl 发表于 2014-8-12 21:02:26

你需要一个神器“Source Insight”

TANK99 发表于 2014-8-12 21:56:26

光知道代码间的关联是不够的,关键是要理中间的逻辑。
一个月读通,读的时候随时根据理解增加注释(刚开始的几天发现,从一坑掉入另一个坑,越掉越深,不知什么时候是个头。),半个月复述逻辑(有点眉目了,越来越开朗。),这时候就可以开始进行小修改了(记得及时备份)。

还有就是看到不合自己味口的对齐方式等等代码格式,会增加其间的不适应,电工都有强迫症,修改会花不少时间,可以先用自己味口的方式格式化一下。

如果能余半个月那就最好了,基本要两个月。

其实楼主问这个事,就是心里在打鼓。

mfketggo111 发表于 2014-8-12 22:08:42

改并不需要多少时间,关键是能理清思路

Xplain 发表于 2014-8-12 22:47:51

看来楼主是没维护过旧产品的经历啊

bart 发表于 2014-8-13 00:08:22

我看过一个.c文件20000多行,5000行以下是废掉的根本没用到

kubuco 发表于 2014-8-13 00:35:04

有注释,有结构文档,不用太费时间。

csmjmcc 发表于 2014-8-13 08:35:19

lzchuo 发表于 2014-8-12 11:33
与UCOSII相比,UCOSII,5千多行,有书籍讲解代码,大家觉得完全看懂要用多久时间?
项目1.5万行,
劣势:


不能与UCOS相比的。UCOS里头的算法非常巧妙,若没有书籍讲解其思想意图,是很累人的。

i7gly 发表于 2014-8-13 08:42:51

三天了解大概,一周可以消化,前提相当有空

xintao 发表于 2014-8-13 08:46:24

本帖最后由 xintao 于 2014-8-13 08:48 编辑

我觉得要先看是基于什么样的硬件的吧,
然后自己先分析一下,实现这样的功能,如果让自己写代码,需要怎样来写,
然后再去看代码,如果思路对了,很快就能上手改代码了,没必要每一行代码都去看。

styleno1 发表于 2014-8-13 08:50:21

楼上有几位说得很对,先读产品设计文档,再看代码,按照功能索引读源码。

yirenonege 发表于 2014-8-14 11:15:58

放上部分代码来看看,我改过别人的代码,加起来不到3百行吧,改来改去,硬件部分,单片机程序,FPGA逻辑 统统改了,{:titter:},前前后后加起来尼玛有一个多月。这都是要交了的项目,干了一年了,奖金估计都领到了

iwqt1983 发表于 2014-8-25 14:34:58

代码行数不是问题,关键是这要明白这个产品代码的架构与产品的功能控制等,代码什么也不是,只是个最终实现的工具而已,不要拿代码大小来说事,没有意思.再说了,不同的产品代码没有可比,不同人写的也可能天壤之别啊.

iwqt1983 发表于 2014-8-25 14:35:22

时间长短不是别人决定的,还是看你自己的领悟吧

lzchuo 发表于 2014-8-26 08:21:55

iwqt1983 发表于 2014-8-25 14:34
代码行数不是问题,关键是这要明白这个产品代码的架构与产品的功能控制等,代码什么也不是,只是个最终实现的 ...

代码行数多少可以间接说明产品功能的多少和复杂程度,2千行和2万行代码的产品的复杂程度绝对不是一个概念。
代码行数多了,变量,标志,指针,结构体,函数多了,数据结构也相对要复杂得多。理解起来当然也就难一些,所以要有方法才会顺利一些。
“明白产品代码的架构与产品的功能控制”不都得看代码吗?我觉得用代码量的大小来描述这个问题,还算比较贴切的;
听听大家读别人代码的一些经验和方法,我觉得很有必要,也很感谢大家的分享。

LingYi 发表于 2014-8-26 09:03:09

1个礼拜足够了吧!关键是用心,拒绝浮躁!

iwqt1983 发表于 2014-8-26 11:49:43

代码多少有用吗?有的程序用几行与几千出来的效果可能是几行代码的更好. 都说了没有可比性的. 不同产品的代码大小没有可比性, 不同人的代码没有可比性. 上面说的很明白的. 为什么要用大小来比较呢.

lzchuo 发表于 2014-8-26 12:27:08

      不同的产品功能各不相同,不同人写出的代码千差万别,这点我是相当认同的;
不同的产品,不同写代码的人,它们的相同点恰恰是代码,而代码量的多少可以反应出产品的复杂度或者说规模;不用代码量描述用什么描述更合适呢?把功能都列出来不就变成具体项目了吗?
我们要做的是,找出类似问题的一般规律,和解决类似问题的普遍方法。这样的问题很多人都会遇到,对后来者也有益。

javabean 发表于 2014-8-26 13:00:32

学习找到程序的整体框架,认真研究1-2个核心功能,然后有需要修改的地方就上就是了
改程序比较麻烦,因为要读懂旧的,再把新的加入,而且要该分的分,该合的合,要不只会越改越烂
我们项目组开发搞了几年的一个项目已经有80多w行代码了,但是新人依然可以1周入职进行开发新功能、修改已有、排除bug的工作,除了对新人能力有一定要求外,项目的原则和架构把握好,还是可以很快上手的

rockyyangyang 发表于 2014-8-26 13:08:41

qwerttt 发表于 2014-8-12 20:48
一个.c 1W5千行吗?呵呵

看到这个,我来说说,特么,我刚来我公司的时候,就是一个.c,然后接近一万行

lengque007 发表于 2014-8-28 08:27:23

这么长的代码!慢慢看吧!

zhixiao158 发表于 2014-8-28 08:39:39

说实话,个人感觉代码量只是个噱头,如果作者习惯比较好,写之前考虑到了易读性,再加上如果功能不是很复杂的话,还是不难看懂的,这个就是体力活了。。。要不然的话,楼主就等着抓狂吧、、、、、、

wx2k 发表于 2014-8-28 08:40:52

有问的时间,都看完了。{:lol:}

sky1234567 发表于 2014-8-28 08:41:53

十个工作日

sky1234567 发表于 2014-8-28 08:43:07

techbaby 发表于 2014-8-12 11:17
子函数动则6,7百行?

只能说你苦逼了,我一直觉得能TM将一个函数写到100+行的都是牛(2)人(B)。 ...

看下linux的 nand_base.c
满满的都是泪

sky1234567 发表于 2014-8-28 08:43:57

techbaby 发表于 2014-8-12 11:17
子函数动则6,7百行?

只能说你苦逼了,我一直觉得能TM将一个函数写到100+行的都是牛(2)人(B)。 ...

看下linux的nand_base.c
满满的都是泪

机器人天空 发表于 2014-8-28 08:59:33

rockyyangyang 发表于 2014-8-26 13:08
看到这个,我来说说,特么,我刚来我公司的时候,就是一个.c,然后接近一万行 ...

吓尿了。。。。。。。。

成就与价值 发表于 2014-8-28 09:19:14

架构清晰,取名通俗的花很快就能看懂的,要是连什么变量或者函数式干什么的都看不懂的话,那就有点费力了

成就与价值 发表于 2014-8-28 09:19:55

架构清晰,取名通俗的花很快就能看懂的,要是连什么变量或者函数式干什么的都看不懂的话,那就有点费力了

armstrong 发表于 2014-8-28 20:07:29

维护别人的旧代码就得从功能入手,根本不必每一个函数顺序看过去。从main函数开始,分析它的架构,层次;能清楚了大概,再根据你的修改需求细化探究,1.5万行的项目不算很大!

NJ8888 发表于 2014-8-28 20:16:00

发片段来瞧瞧

fy_bk 发表于 2014-9-12 19:40:20

两周看不懂就不用看了

zhongya917 发表于 2014-9-12 20:00:20

看运气了啊兄弟

Arvin_lu 发表于 2014-9-12 20:29:50

慢慢来。。。。。

在途中 发表于 2014-9-12 20:59:53

修改功能看一周吧,完全看懂就得看代码复杂度了

scq198501 发表于 2014-9-12 21:20:07

Robin_King 发表于 2014-8-12 10:56
一周应该没什么问题吧?

莫非你就是传说中的高手???
绝对高手啊{:lol:}

ruanxianwu 发表于 2014-9-12 22:02:45

两年可以
页: [1]
查看完整版本: 1万5千行的C代码,要多久能看懂?