news 2026/6/10 11:07:23

C语言对话-7.方形尖塔

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言对话-7.方形尖塔

sebastian 翻译

“下周,队伍就要下去了,我想我们会在一周后到那儿。”珍妮总结道,“他们仍在水晶石塔上方挖掘,但没有什么新发现。进展很缓慢,我们不打算进行这样的探查。这超出了我们的探索和采矿的命令。弗兰奈尔仍然认为这是个玩笑。”

我笑道:“弗兰奈尔总是留有余地,要从他那儿掏出点什么。颜色不对,地点也不对,真是——”

“是啊,几个月前我们就知道它深处冰层之下。”

“形状也不对,如果有人真想开玩笑,完全可以做得比这个高明些。不管怎样,没有一个开玩笑的人会搞得这么复杂。”

“我已经听了一个好一点的消息,”珍妮打断道:“奥布里认为这是真的,但是他认为这是阴谋。如果是2001年,年代好象太近了。”她用用她那夸张的特有的口音模仿那些年轻职员。

“哦,奥布里发现政府到处在掩饰些什么。记不记小时候,当魔幻跳弹被藏起来后我们暴跳如雷的样子?”我停顿了一下,意味深长地笑了一下,“谈到庞然大物,我有没有跟你说起过我在新年后的奇怪发现,那是在真正的2001年......?没有?那好,这事发生在我第一份工作期间......”

那是一月二日,一个星期二,我发现鲍勃的大块头代码。我们刚过完假期,每个人都兴高采烈,肚子吃得圆圆的。不幸的是,交付期限可不等人。慢慢地,我们又回到了紧张的工作状态。我也很高兴我已经设法熬过我的工作试用期了,现在我是真正的雇员了。尽管我有时仍然怀疑这是不是完全的好事,因为现在的工作使我跟Guru捆在一起。她很能干,确实如此,但又有点怪异。

当温迪打断我的时候,已经快吃午饭了。“哎,”她说道。

我抬起头:“什么事?”我正在执行一个调试任务,想找出我代码中的一个错误,正准备休息。跟几十次单步跟踪同一个函数相比,干啥事都要强上一筹。

温迪道:“鲍勃这个星期还在外边,我需要快速修复你上个月让他接手的功能模块;我在第510行发现缓冲器溢出错误,你能在今天下午找到它并修复吗?”

“当然。” 她给了我一个文件名,我把它调入了我的编辑器。

一个半小时后,我必须承认我的错误:调试程序里真的有一些比我单步跟踪代码更坏的事情。我最终放弃了,朝着温迪的房间走去。“对不起,”我沮丧的说。

温迪吃了一惊,我估计她没有听到我来到她身后。我挤出一点笑容....这通常Guru对我们的动作。“对不起,你说什么?”她问道。

“你希望能早一点修复代码,但我很对不起,温迪,我恐怕我办不到。”

“出了什么问题?”

“我想你已经知道了我刚才所出的问题。”

“你在说什么?”

我叹了口气,不再捉迷藏:“我无法很快修复它。在我把这个模块交给鲍勃后你知不知道鲍勃是怎么干的?我发誓他的做法跟我的毫无相似之处。它的原来面目、它的目的对我来说完全是个谜。我必须要半天时间去研究他在这上面做了些什么。”我靠近她,在她的屏幕上拉出文件,来到函数开始的地方,然后按住滚屏键,几乎2000行以后,我们在文件的末尾找到了代表函数结束的}号。“这个函数现在的长度是1908行。大致是一个1200行的if语句块,接下来是700行的else语句块。我想剩余的大部分都可用源代码优化器来修正。”

温迪难以置信地摇摇头,但最终又点了点头:“我以前看他这样做过,但我真的想阻止他任意地使用标号和长长的代码行,尤其是随意的垂直空格。”

“至少有一个地方,你必须翻遍整屏的空行才能看到下一条代码行。并且你有没有注意到有时他在进入for或while语句块后用goto跳出到标号处? Guru从来不提倡这么做 . . . 她不是要实行代码的标准化吗?”

“事实上我们是这样做的,我的孩子,”一个感叹的声音从我们身后传来,我们都跳了起来。Guru忧愁地继续道,“Bob已经被警告过了。他应该再被警告一次,而这次他应该被扣工资了。但是 . . .”她思考了一下。

温迪和我都不想立即说话。沉默镇定了。最终,我静静地催促着“但是,什么?”

Guru慎重地眨眼睛了:“文件里最长的一行有多长?”

温迪快速的检查了一遍:“确切的说最长的有848个字符。这是最长的。”

“最短的有多长?”

这用了温迪更长时间:“他最短的没有空白的代码行是212个字符。这么长的有好几行。”

Guru好象了做一些快的心算,并且再一次叹息:“我明白了,也许他在做一个声明。”

我想了一会儿说:“Oh,我了解了:1~4~9。这是一行的长度和整个函数大小的比率。”

温迪叹息。

Guru把她的头发推到她的耳朵后边,调整了她的眼镜。“避免了整块集成代码,”她说。“Bob是一个结构化的程序员,但是,他应该好好地了解功能分解的存在价值。这个函数很明显可以分成两部分。但是,甚至那些部分都会太复杂,还应该进一步被分解。温迪,教这年轻人:好的代码分解有什么好处?”

“清楚,”温迪说,敲打这每个手指的关节。“复用性。封装。可维护性 . . .”

正在此时,就在这个不幸的瞬间,我们听到前门打开了,从外面传来口哨声,接着门又关上了,然后鲍勃走了进来。

“嗨,花花公子,”鲍勃说道,他脱下他的手套并在地毯上敲打靴子上的雪。他心不在焉地抓了抓脑门,“什么事?”

“我以为你整个星期都不来了呢。”温迪抱怨道。

“对,确实如此,小乖乖。我过来拿一些下载在这里的文件...并上上网....嗯,哈,当然,这些并不重要。”他斜视了一下温迪的显示器,“那是我的代码。”

“那是我的代码。在你使它变成玩笑前,它曾是一段不错的代码,”我激动的说。鲍勃比我有更多年的经验,但是我的试用期已结束了,我很生气,我猜测我本可以还有一点理智,我应该有相当美好的最后几个夜晚。我觉得好象是在冒着危险。

鲍勃耸耸肩:“嗨,看。我明白你对这很心烦。”

“心烦?鲍勃,”我反驳道,“你已经把我的代码变得很滑稽!”

“这只能归因于人的错误,”Guru平静地表示赞同。

“嗨,”Bob自卫地说,“我真心希望你能平静下来。吃一粒镇定药并且仔细思考一下这件事。”

“鲍勃,”Guru说道,“滚。”

“嗨,我并被要求...”这时鲍勃才明白过来,并冷静下来,“嗨,看。很好。我知道最近我的某些决定不是很好,但我向你绝对保证我的工作会恢复正常的...”

“鲍勃,这谈话已经达不到目的了。再见,去过你的假期吧。我们会在周一私下再讨论这件事。

鲍勃抱怨着,但是好像仔细的考虑了一下就离开了。Guru也是。两个人都从听力所及的范围里消失了。温迪和我都咯咯的笑了起来。当我们恢复过来后,温迪通过源代码优化器执行了文件,而我把当天剩余的时间都用于重写鲍勃的代码。我发现作为结果产生的更小的函数应该被重用,现在它们的功能很好地被分离开来,比集成在一个大块里好多了。更小的代码块更容易理解,很快我就发现了温迪的问题,并把它解决了。我给温迪的问题添加了一个单元测试,重新执行了整个单元测试,确保一切顺利,并重新检查了整个模块。

“你肯定这是你第一次在工作中发火,”珍妮摇了摇头。

在我正要回答时,休息处门开了,布拉森科沃斯基走了进来。 他看也不看的朝休息室另一边走去,对他来说有点不同寻常。

“嗨,”我叫道,“你在那里都不打招呼?”

布拉森拉沃斯基转了过来:“什么?哦,对不起,你刚才听到消息了吗?”

珍妮皱眉了:“什么消息?从发掘现场那里来的吗?”

“对,看上去那个方形尖塔,”布拉森拉沃斯基平静地说,“不仅仅是个石塔,它好象是某个建筑物的顶部。”

[注释]

[1] Note from the authors: Believe it or not, this is an actual example of code written by a programmer the authors encountered some years ago.

作者注:相不相信随你,这的确是作者几年以前遭遇的程序员写代码中的真实的例子。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 2:37:41

‌为什么你的测试团队总在“加班”?因为你没做“自动化”

‌一、现象:加班不是荣耀,是系统性失效的警报‌ 在大多数软件团队中,测试人员的加班文化早已被默认为“常态”。 周五晚上紧急上线前的回归测试、凌晨三点的线上缺陷复现、节假日被拉进群的“紧急验证”……这些场景,不是个别团队…

作者头像 李华
网站建设 2026/6/5 23:41:19

大数据领域分布式计算的量子计算展望

大数据领域分布式计算的量子计算展望 关键词:大数据、分布式计算、量子计算、计算效率、未来展望 摘要:本文深入探讨了大数据领域分布式计算与量子计算的相关内容。首先介绍了大数据和分布式计算的背景知识,包括其目的、范围、预期读者等。接着阐述了量子计算的核心概念、原…

作者头像 李华
网站建设 2026/6/9 20:02:20

张伟的职场奇遇记2-AI抢我饭碗?

一 “张伟,你被AI取代了。” 周三下午三点,老板老马站在张伟工位前,语气平静得像在通知茶水间没咖啡了。他手里拿着一份打印稿,纸角微微卷起,像是刚从打印机里抢救出来的战报。 张伟正埋头修改第41版椰子水广告语—…

作者头像 李华
网站建设 2026/5/13 4:50:57

张伟的职场奇遇记4-咖啡机成精了

一 创意无限广告公司有两样东西从不罢工: 一是老板老马的韭菜盒子味儿,二是茶水间那台银色胶囊咖啡机。 这台机器是公司五周年庆时老马花八千块买的,号称“意大利原装,萃取灵魂”。可实际上,它脾气比甲方还大——偶尔…

作者头像 李华
网站建设 2026/6/7 3:59:40

6个黑客教程网站,小白也能成大牛!

6个黑客教程网站,小白也能成大牛! 一般而言,黑客主要有两种:黑帽黑客、白帽黑客。 黑帽黑客为了个人利益,利用自身的计算机系统知识侵入系统,这种做法是违法的,需要负法律责任; 而…

作者头像 李华
网站建设 2026/6/7 17:26:15

网络安全红蓝对抗是什么?其主要目的是什么?

在网络安全领域中,红蓝对抗是非常重要的存在,它是一种模拟性的演练,用于评估和提高组织的网络安全防御能力。所谓的红蓝对抗,就是红队与蓝队之间进行对抗,那么网络安全中红队和蓝队是什么?我们通过下文来学习一下。 …

作者头像 李华