吐血啊,前两天接到的一个程序.

彭家老三 2012-03-28 11:55:49
其中有两个cpp文件,一个68000多行,一个57000多行.其中有一个函数,代码有30785行....Cbuilder6.0打开后鼠标都不敢随便动,否则动一次卡住5~7秒.尼玛呦,这是哪位大神写的啊,小弟五体投地啊.
...全文
410 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
pianfenshuderen 2012-04-04
  • 打赏
  • 举报
回复
类似的代码,我最近遇到过,重构的建议提了一个多月,领导不同意。最后结果,一刀两断。公司辞退我,我也炒了老板。
tobeideal 2012-04-02
  • 打赏
  • 举报
回复
寫這文件的人是個人才!
彭家老三 2012-04-02
  • 打赏
  • 举报
回复
握个手先,呵呵,我之前负责的程序其实很有条理的,就这一个让我有点惊讶,好在我只是负责将其中的几个调用存储的函数改一下就好了.
[Quote=引用 26 楼 的回复:]

我也是搞产测软件开发的 公司给的软件代码的确是相当多 但是比你好点就是比较有条理 不会向你们那样一个cpp 几万行 呵呵 这兄弟够可怜的
[/Quote]
彭家老三 2012-04-02
  • 打赏
  • 举报
回复
我明白您的意思,其实如果是一个人写的话,绝对不会写成这个样子,这十年来不知道这个程序遭到过多少人的蹂躏,所以就成了这样一个怪胎.而且他读的不是xml或ini格式的文档,而是txt文件,里面的格式更是千变万化,所以也没有什么版本不版本的问题了.
[Quote=引用 25 楼 的回复:]

自己编的软件里面也有你遇到的情况,上部分代码你看了,就明白如何搞了。
C/C++ code

// .h
void readParse(QXmlStreamReader *xml);

// 读取文本阅读器V3.0.0的书签
void readParseV3_0_0(QXmlStreamReader *xml);
// 读取文本阅读器V1.0.……
[/Quote]
wg961423 2012-04-01
  • 打赏
  • 举报
回复
最大一个CPP也只有111K的飘过。
longfei411 2012-04-01
  • 打赏
  • 举报
回复
我也是搞产测软件开发的 公司给的软件代码的确是相当多 但是比你好点就是比较有条理 不会向你们那样一个cpp 几万行 呵呵 这兄弟够可怜的
sndscbdjf 2012-04-01
  • 打赏
  • 举报
回复
奇怪了,难道过程中都没有人把文件分割一下?
太神奇了。
hemiya 2012-03-31
  • 打赏
  • 举报
回复
自己编的软件里面也有你遇到的情况,上部分代码你看了,就明白如何搞了。

// .h
void readParse(QXmlStreamReader *xml);

// 读取文本阅读器V3.0.0的书签
void readParseV3_0_0(QXmlStreamReader *xml);
// 读取文本阅读器V1.0.0 - V2.3.0的书签
void readParseV1_0_0(QXmlStreamReader *xml);

// .cpp
void TBookmarkConfig::readParse(QXmlStreamReader *xml)
{
xml->readNextStartElement(); // root node
m_item.clear();

// 读取文本阅读器V1.0.0 - V2.3.0的书签
if (xml->name() == "Root")
readParseV1_0_0(xml);
// 读取文本阅读器V3.0.0的书签
else if ((xml->name() == its::name) && (xml->attributes().value("version") == "1"))
readParseV3_0_0(xml);
}
hemiya 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 的回复:]

引用 20 楼 的回复:
是不是日本外包的软件?
我们公司就有过很多3万行以上的函数,结果是因为狗日写的设计象写文章一样,一气呵成。
如果切割成不同的函数,反而变成了违反狗日的设计了,所以谁看到都是是无奈呀。

不是外包,是测试无线通讯用的,这个函数是为了读取他们自己定义的txt文件,结果文件的格式一更新,读取的函数就跟着更新,前写的代码不敢去掉,就在下面else if继续写,02年……
[/Quote]
那也不用一直else if 加上一堆代码啊。
else if 后面调用带版本号的函数就行了。


read();// 最开始的接口
read_V1_0_0(); // 适用1.0.0以前的软件
read_V2_5_0(); // 适用2.5.0以前的软件
read_V3_0_0(); // 适用3.0.0以前的软件
彭家老三 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]
牛a与牛c之间。
个人对于超过1000行的单个源码文件看着都晕
[/Quote]
代码多点倒也无所谓,但那一个cpp文件2.5MB,就算用记事本打开都有点慢.
彭家老三 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 的回复:]
是不是日本外包的软件?
我们公司就有过很多3万行以上的函数,结果是因为狗日写的设计象写文章一样,一气呵成。
如果切割成不同的函数,反而变成了违反狗日的设计了,所以谁看到都是是无奈呀。
[/Quote]
不是外包,是测试无线通讯用的,这个函数是为了读取他们自己定义的txt文件,结果文件的格式一更新,读取的函数就跟着更新,前写的代码不敢去掉,就在下面else if继续写,02年到现在,于是就成这种规模了.如今已是积重难返,还好我只负责将此程序连接数据库的部分弄好就成了,其他的不用我操心.
彭家老三 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
功能被不斷地增加,需要被不停地更改,代碼需要不斷地完善。
在經歷修改代碼的痛苦后,才會明白“舉重若輕”的感覺是多麼美妙!
面向對象編程與小時候看的數學歸納法的解題思路挺象的:

1、總結:總結需求,將代碼需要實現的功能寫出來,這步很重要,因為缺少這步,后來的人不知道你這些代碼總共要實現哪些需求,不是大牛不下決心的話,不敢重新實現。只好選擇在上面修修改改,導致代碼越來越長。
2、歸納:將重……
[/Quote]
受教了.这代码的历史大概有10年左右,期间不知道经过多少人的蹂躏,就像您说的那样,不敢重新实现,只好选择在上面修修改改...
Jonix 2012-03-30
  • 打赏
  • 举报
回复
是不是日本外包的软件?
我们公司就有过很多3万行以上的函数,结果是因为狗日写的设计象写文章一样,一气呵成。
如果切割成不同的函数,反而变成了违反狗日的设计了,所以谁看到都是是无奈呀。
勉励前行 2012-03-29
  • 打赏
  • 举报
回复
功能被不斷地增加,需要被不停地更改,代碼需要不斷地完善。
在經歷修改代碼的痛苦后,才會明白“舉重若輕”的感覺是多麼美妙!
面向對象編程與小時候看的數學歸納法的解題思路挺象的:

1、總結:總結需求,將代碼需要實現的功能寫出來,這步很重要,因為缺少這步,后來的人不知道你這些代碼總共要實現哪些需求,不是大牛不下決心的話,不敢重新實現。只好選擇在上面修修改改,導致代碼越來越長。
2、歸納:將重複的代碼,重複的需求歸納為一個個函數或類
3、猜想:在頭腦中出現一個類體系(數學模型),通過這些類的組合與繼承,能解決需求中的問題。各個類間如何的組合,如何繼承,如何通訊,則能解決現實中的哪類問題。
4、證明:將能在這個類體系中,能解決的問題的集合列出,也將現實需要中需要解決的問題列出,兩者重合度很高的話,表示你設計的這個類體系是可以解決問題的。也對以后可能出現的問題做到心中有數。這是遇到問題可以做到“舉重若輕”的基礎。

寫代碼,數學多了一個最終實現,數學只要證明就完了,而寫代碼還要將這變成現實。
而這就是要考慮類的接口,是否好用。即功能可以實現了,接口又簡單易用,那麼你的這個類體系設計就是成功的了。有好的設計,才有好的代碼。叫學程序設計,就要有設計者的心胸,要不然學不好。

別為大神歡呼,踏踏實實站在地板上做好設計,我們的程序是為普通人而做,我們不是為成神而努力寫出只有神才看得懂的代碼。

springchina 2012-03-29
  • 打赏
  • 举报
回复
这简直就是极品中的战斗机轰炸机啊~
sgyiliya 2012-03-29
  • 打赏
  • 举报
回复
xuanyanlan 2012-03-29
  • 打赏
  • 举报
回复
牛b的函数
今儿起叫民工 2012-03-29
  • 打赏
  • 举报
回复
虽然不会c++但是一个函数三万多行真的是很吓人啊
haibiantingtao 2012-03-29
  • 打赏
  • 举报
回复
这种编写风格就是有病,难维护,百害而无一益
hemiya 2012-03-29
  • 打赏
  • 举报
回复
牛a与牛c之间。
个人对于超过1000行的单个源码文件看着都晕
加载更多回复(12)

552

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧