周四下午两点半,计算机楼307教室,空气里弥漫着熬夜编码后的咖啡因与绝望混合的独特气息。
《软件开发工程》的小组答辩正在进行。
林怼怼坐在教室后排,一只手撑着下巴,另一只手的手指无意识地敲击着桌面,眼神放空,盯着投影布上那坨五彩斑斓、结构清奇的PPT,内心如同跑过一万头羊驼。
“所以,我们基于Java Swing开发的这款‘校园精灵’管理系统,实现了学生信息查询、课程管理、食堂点评等十大功能模块……”讲台上,组长张志航正口若悬河,脸上洋溢着一种与代码质量毫不相关的自信。
林怼怼,人如其名,此刻心里正在疯狂刷着弹幕:
「基于Java Swing?这玩意儿古董到博物馆都得给它单开个展柜!」
「十大功能?其中八个是‘点击此处,功能待实现’的按钮吧?」
「这UI设计是跟隔壁幼儿园抽象派画师学的吗?色彩饱和度高的能闪瞎我的钛合金狗眼!」
他就不该因为前几天沉迷一个开源项目而错过了最后一次小组会议。等他被拉进群时,代码仓库里已经堆满了这群神仙队友的“杰作”——命名规范是啥?不存在的,变量全是a, b, c, aa, bb。注释?比大熊猫还稀有。代码结构?那叫一个随心所欲,意大利面条看了都得甘拜下风。
他熬了一个通宵,试图在屎山代码上雕花,最终也只来得及重构了核心的业务逻辑,让程序勉强能跑起来,至于那UI和一堆华而不实的功能,他实在无力回天。
“以上就是我们组的全部展示内容,谢谢老师。”张志航鞠躬,脸上带着“稳了”的微笑。
主讲老师王教授,一个头发稀疏、眼神锐利的中年男人,推了推眼镜,脸上看不出喜怒。他点开了项目源代码。
教室里瞬间安静下来,只剩下鼠标点击和键盘敲击的声音。
林怼怼的心一点点沉下去。他知道,审判的时刻到了。
果然,王教授的眉头以肉眼可见的速度皱了起来,越皱越紧,几乎能夹死一只苍蝇。他的鼠标在某几行代码上反复滑动,呼吸声逐渐加重。
“张志航同学,”王教授终于开口,声音低沉,“请你解释一下,你这个‘学生信息模糊查询’功能,为什么要用七层嵌套的if-else语句?你是打算用代码堆一座金字塔吗?”
张志航脸上的笑容僵住了:“呃,老师,这是为了逻辑严谨……”
“严谨?”王教授打断他,声音拔高,“你管这个叫严谨?你看看这全局变量满天飞,各个模块耦合得跟连体婴一样!还有这个数据库连接,你每次查询都新建一个连接,用完还不关?你是打算开个养鸡场,专门下‘连接耗尽’的蛋吗?”
台下发出一阵压抑的嗤笑声。
王教授的火力全开:“最离谱的是这个食堂点评功能!用户输入一个评论,你直接把字符串拼接进SQL语句执行?连最基本的防SQL注入都不做?你这做的不是‘校园精灵’,是‘校园黑客入门教学工具’吧!随便来个懂点皮毛的,都能把你这个后台扒得裤衩都不剩!”
张志航的脸一阵红一阵白,支支吾吾说不出话来。
王教授深吸一口气,显然气得不轻,他扫视了一圈台下:“你们这个组,是谁负责的核心业务逻辑?”
张志航和另外两个队友眼神飘忽,默契地低下了头。
王教授的目光如同探照灯,最后定格在一直试图降低存在感的林怼怼身上。
“林怼怼!”王教授点了他的名,“你平时不是挺能说的吗?来,你给我说说,就你们组交上来的这个项目,如果满分100分,你打多少分?”完了。
林怼怼心里咯噔一下。他知道这是祸水东引,但他更知道,如果此刻不开口,这门课必挂无疑。
他深吸一口气,站了起来。那一万头在心里狂奔的羊驼,此刻仿佛被注入了灵魂,即将冲破栅栏。
他清了清嗓子,脸上挂起一个人畜无害的微笑:“王老师,打分就不必了吧,我怕说出来,我们组员承受不住。”
王教授挑眉:“哦?那你评价一下。”
“评价?”林怼怼眨了眨眼,那股子憋了一节课的毒舌能量终于找到了宣泄口,语速平稳,但字字诛心:“老师,我觉得用分数来评价这份代码,是对数字的一种侮辱。”
教室里瞬间落针可闻,所有昏昏欲睡的同学都瞪大了眼睛,竖起了耳朵。
“在我看来,张志航同学这套七层if-else,并非为了逻辑严谨,”林怼怼侃侃而谈,“这更像是一种行为艺术,旨在向后人展示,在没有使用‘switch’或‘策略模式’等现代文明工具的情况下,原始猿人是如何用石头敲出复杂逻辑的。其考古价值,远大于实用价值。”
“噗——”有人没忍住笑出了声。
张志航的脸瞬间涨成了猪肝色。
林怼怼没停,目光转向投影布上的代码:“至于全局变量的问题,我认为这是组长一种深谋远虑的设计。他将所有变量都提升到全局高度,是为了让它们拥有上帝视角,方便在任何时间、任何地点进行一场说走就走的‘数据联谊’,充分体现了代码界的自由博爱精神。”
“而那个永不关闭的数据库连接,”林怼怼叹了口气,语气带着一种虚假的惋惜,“这分明是组长对服务器深沉的爱啊!他希望通过这种方式,与数据库服务器建立一种‘生死与共,不离不弃’的持久化连接,这份执着,天地可鉴。”
哄笑声更大了。
王教授的嘴角微不可察地抽动了一下。
“最后,关于那个不做任何防护的SQL注入漏洞,”林怼怼总结陈词,语气变得无比“诚恳”,“我认为这是我们项目最大的亮点!它用一种血淋淋的方式,向在座的每一位同学生动演示了什么叫‘删库到跑路’的完整流程,教育意义极其深远,堪比一次网络安全实战演习。我觉得,学校应该为此给我们组颁发一个‘最具安全意识贡献奖’。”
“哈哈哈哈!”整个教室彻底爆发出震耳欲聋的笑声,连讲台上的王教授都忍不住别过脸,肩膀微微耸动。
张志航和他的两个队友,脑袋已经快要埋到桌子底下去了。一场原本严肃的答辩,硬生生变成了林怼怼的单口相声吐槽大会。
王教授好不容易止住笑意,转回头,看着林怼怼,眼神复杂:“林怼怼,我算是看出来了,你这张嘴,比你的代码厉害多了。”
他敲了敲桌子,让教室安静下来:“好了,玩笑归玩笑。你们组的项目,核心业务逻辑部分,我看了,写得倒是清晰规整,和你之前的表现不符。但这UI和这些乱七八糟的功能,还有这整体的代码规范……问题太大!”
他沉吟片刻,做出了判决:“鉴于项目严重不合格,且存在重大安全漏洞,你们组,本次答辩成绩——不及格!”
虽然早有预料,但听到宣判,林怼怼心里还是猛地一沉。完了,这个学期的奖学金泡汤了,还得花时间补考或者重修。
下课铃响起,王教授收拾好教案,临走前,又意味深长地看了林怼怼一眼:“林怼怼,有空来我办公室一趟。”
同学们嘻嘻哈哈地散去,不少人经过林怼怼身边时,还对他投来敬佩或同情的目光。张志航几人更是溜得比兔子还快。
教室里很快空了下来,只剩下林怼怼一个人。夕阳透过窗户,在他身上投下长长的、孤独的影子。
他瘫坐在椅子上,长长地呼出一口浊气。身体被掏空,嗓子也因为刚才的超水平发挥而有些沙哑。
“啧,爽是爽了,挂科也是真挂了……”他揉了揉发胀的太阳穴,自言自语地吐槽,“这破代码,简直是对我智商的侮辱,对我审美的强奸,对我宝贵时间的谋财害命!但凡这群猪队友的脑子能像他们的胃口一样好使,我也不至于……”
他一边低声咒骂着,一边认命地打开自己的笔记本电脑,准备看看那坨“屎山”还有没有抢救一下,做个补考项目的可能。
就在他按下开机键,屏幕亮起的那一瞬间——
异变陡生!
熟悉的操作系统界面没有出现,屏幕先是猛地一黑,随即,一串如同黑客帝国数字雨般的绿色字符,疯狂地刷满了整个屏幕!
林怼怼吓了一跳,差点从椅子上跳起来。
“什么情况?中毒了?还是熬夜太多出现幻觉了?”
字符滚动得极快,他勉强能看清最顶端的几行巨大加粗的字体:
【检测到高强度、高精度、高能量‘毒舌’波动……】
【能量频谱分析……目标锁定……】
【契合度99.9%……系统强制绑定中……】
【毒舌能量系统,为您服务!】