晚上十一点多。电梯门“叮”一声合上,手机屏幕彻底暗了。白天攒的那一百多条未读消息,总算歇了。我背靠着冰凉的金属厢壁,看楼层数字一个个往下掉。手里正攥着本前年咬牙买的《面向对象程序设计与Visual C++ 6.0教程》。书脊软塌塌的,封皮糊了层薄灰。说实话,当初买它,纯属脑子一热。琢磨着能不能照着书里的逻辑,把自个儿那团乱麻似的日子也重新编译一遍。结果呢?只翻了前面几章,就再没正眼瞧过。买完就落灰,图啥呢?

书里有一页折了角,写着“封装”。原话挺干:把数据和操作绑一块儿,藏好里头的弯弯绕绕,只留个干净的口子给人用。安全,好维护。

刚瞅见这词儿,只觉得是干巴巴的操作手册。最近夜里失眠翻来覆去咂摸,才咂出点人味儿。咱们这帮成年人,不就这么干吗?焦虑打包,疲惫塞进私有变量。对外递出的,永远只有“没事”“挺好的”“马上弄”这几个公共接口。硬把自己封装成个运行稳定的类。不露软肋,不抛异常。指望在任何场合都能被顺手调用。这事儿,大概就是这么个意思吧。

可日子真不是跑在固定机房里的程序。没重启键。也没个随时能插进去的调试器。把自己捂得越严实,越像段挑不出毛病的代码。但有些东西,压根封不住。

上周三赶项目。连着熬了三个通宵。白天在会议室里,进度条掰开揉碎对齐,语气平稳得像段死循环。结果那天晚上摸黑回家,开冰箱拿水,突然就蹲在瓷砖地上哭上了。没预兆。也没人瞧见。压缩机嗡嗡响,冷光打得人眼疼。那一刻才琢磨过味儿来。封装再严密的对象,也扛不住内存溢出。你藏得越深,反弹起来越要命。我觉得吧,成年人的情绪管理,很多时候真不是“优化算法”,而是“延迟报错”。拖得越久,爆雷的时候越没商量余地。

书里接着扯继承和多态。说能拿现成的类型往下传属性,换个对象照样用一套法子。人哪,不也这样?继承爹妈的脾气,继承学校的规矩,继承社会硬塞过来的标准模板。在不同场合适时切换“子类”:对上乖顺,对下靠谱,回家还得演个报喜不报忧的孩子。方法名都叫“应付”“维持”“体面”。套着继承来的壳,终究包不住自己长出来的骨头。多态再会变通,也替不了咱们自己迈腿。可能有时候我们以为自己在“多态”,其实只是把同一种疲惫换了个姿势重复调用罢了。

说实话,我以前特眼红那种把日子排得明明白白的人。好像一切都有类可查,有文档对照,出了岔子翻翻日志就能定位。后来自己跌跌撞撞蹚过几年水才明白。人根本做不到什么“高内聚、低耦合”。你越想砍掉不必要的依赖,越会发现那些看着“冗余”的关系,才是真托住你的底。那些没被收拾干净的琐碎、冲动、甚至轴劲儿,恰恰是让你觉着自己还喘着气的证据。低耦合听着高级。但在生活里搞成“零依赖”,最后大概率是连个递杯热水的人都没有。

也许咱真没必要把自己打包得滴水不漏。允许方法被重写。允许属性摊开给人看。甚至允许程序偶尔崩一下。生活又不是Visual C++ 6.0的集成环境。没那块熟悉的灰色工作区,更没有一键编译的按钮。它更像段没留注释的旧代码。跑起来会卡壳,会弹窗报错,占内存还费电。可就是这些没塞进盒子里的毛边,让它在漫长的运行里,有了喘息的节奏。

我把书合上,随手塞进书架最底下。明天还得早起开会,还得继续当那个情绪稳定的成年人。但要是哪天觉得快扛不住了,真不用急着把自己重新打包。留一点接口在外面。让风能钻进来,也让旁人能瞧见你。能喘口气,就行。