舍友们还在闲聊,她打开枕边的电脑,一翻身,下巴抵在枕头上,趴着看消息。
钟步青把之前画好的表发了过来,也把代码传了上去——
临走前她教了李余 git 的基本作用和流程,说以后写完代码可以直接传到 GitHub 上,也可以看到她传的代码。
现在还好,将来如果写大型的项目这样统一管理很有必要。
——————————
“UML表主要是用来写清楚继承关系和互动逻辑的,你可以把它理解成咱们开始写之前的计划图。”
之前在空教室,钟步青从继承关系开始给李余讲起。
她一开始是在平板上写写画画地讲,讲着讲着可能觉得不尽兴,拉着李余往教室前排走去。
她把李余按在第一排,拿起粉笔就开写。
李余觉得她真像个老师,实际上,她比大部分老师都讲得好,毕竟她没有陈年幻灯片可以照着念。
钟步青怕自己讲得太快,时不时停下来问她有没有理解,有时还会设一两个小问题看她有没有理解。
李余看着对面的人笑盈盈地等着她的回答,无意识地摸了两下自己的手腕,跟着一起思考。
钟步青的手全是粉笔灰,她有时候拍手想把它们打落,遗留的粉末挂在皮肤表面纹理的缝隙上,像是被抹匀的白色薄膜。
有时候她讲到一半写错了,也不拿黑板擦,直接蜷起手掌用小鱼际的侧面胡乱抹几下。
连带着她袖口都沾上了粉笔灰,几抹白在黑色卫衣上显得格外显眼。
她也不在意,一直兴致高昂地在讲。
李余很少像这样长时间注视一个人。
钟步青的眼睛不算大,但很亮,很有精气神。
她有时候会手舞足蹈地比划,连带着她细碎的短发四处甩动,试图更清楚地演示思路,仿佛在讲一个不为人所知的稀奇故事。
她讲的时候一直笑眯眯的,但给人的第一感觉不是高兴——更多的是自信,对自己所掌握的知识的自信。
钟步青不只是在讲知识点,她很喜欢讲动机,为什么这么设计,为什么这样有用。
她也会讲一些自己的心得,有不少总结性发言,以及各种冷门小知识。
“据说最开始设计语言时,那群人觉得定义一个结构后直接创造它的实例会很酷,就像这样——”
struct pair {
int a;
int b;
} p1, p2;
“相当于就是你先定义了pair这个结构,然后创造了p1,p2这两个类型是pair的实例,而不用另外单独再去写 ''''struct pair p1;'''',方便吧?”
"但实际上很少有人这么做,毕竟咱们大部分情况下结构的定义都是单独拎出来写的。"
“这就是为什么定义结构的时候末尾一定要加分号。”
李余不知道钟步青从哪里听来的起源小知识,但钟步青讲着,她就听着。
钟步青一口气讲了三个多小时,她就一口气听了三个多小时。
“哎哟对不起,我这一讲起来都忘了时间了。”
李余听到钟步青的道歉,后知后觉地发现钟步青的独特之处——
她真的很热爱在学的东西,热爱到忍不住把它当作宝物去分享。
...跟自己真不一样。
——————————
舍友们陆陆续续要去洗漱,李余对着UML表,一点点地去翻钟步青写的代码。
她想起钟步青的一段总结。
“我觉得学 OOP 最重要的是去思考设计,为什么别人这么去设计,为什么经典的设计模式是这样的,甚至于,为什么我们要关心这些。”
“重要的是讲究一个‘可持续发展’,不光是现在你想去实现的功能,同样重要的是如果你将来想加一些新的东西,能不能在不改动以前代码的基础上搞定。”
“就比如咱们写的这个游戏,你将来想加个新的怪;或者咱们现在展示出来的还是字符跟色块,你将来想改成更高级的贴图之类的。”
“这就是为什么管它叫 OOP,面对对象嘛,就是尽可能把你的每个类都封装好,让它们尽可能独立,互动也尽可能减少依赖。
这样才能像拼图一样,想加什么直接往上面垒。”
“这里面还有个能见度的问题,谁能看到你里面的函数跟内嵌的结构,谁不能;
谁能改变你的数据,谁不能。”
......
钟步青之前说没有时间实现额外的功能,但实际上在规划的时候预留出了很多拓展的余地。