有些晚上,盯着屏幕上那串红得刺眼的报错,真能把人气得想砸键盘。那会儿我刚碰编程,连个Hello World都能敲出三个bug。这破玩意儿怎么就是跑不起来?满脑子就剩这句了。后来哥们儿随手塞给我一本《C#程序设计大学教程》,说是罗兵编的。案例密实,适合新手慢慢啃。我起初压根没往心里去。“大学教程”这五个字一听就透着股板正的学院派味儿。估计又得是密密麻麻的定理。结果你猜怎么着?书翻到最后,脑子里没剩下什么高深算法。反倒全是把那一团乱麻一点点捋顺的踏实劲儿。这事儿大概就是这么个意思。有时候你需要的不是神丹妙药。就是一套能照着走的笨办法。

书里聊到面向对象,重点抠了“封装”这词。作者把一堆复杂的内部逻辑往暗处藏,只露个明明白白的接口。刚看的时候,只觉得是干巴巴的技术词儿。后来咂摸咂摸。这不就是教人怎么划清界限嘛。咱们干活儿的时候,总爱把鸡毛蒜皮全攥手里。结果呢?越抓越乱套。书里拿一个个具体的C#类打样,把数据和活儿打包塞进去。读到这儿我突然回过味来。平时那些让人心累的人情世故,多半也是没学会“封装”。该归拢的归拢,该挡外面的挡外面。腾出来的地儿,才能留给真正要紧的人事儿。不过话说回来,这招在生活里未必好使。毕竟人不是对象。你总不能对着亲戚也设个private属性吧?但职场里这招确实管用。边界感一立,内耗能少一半。真的。

真到了GUI设计那块,我确实卡壳过。界面怎么摆?事件怎么绑?控件属性怎么调?一堆名词砸过来,看得人脑仁疼。我硬着头皮照书里的案例敲。跑出来的窗口永远对不齐。按钮点上去跟死了一样没反应。那会儿挺挫败的。直嘀咕这书是不是太理想化了。连个排版误差都不给留。可硬耐着性子把示例代码一行行对。才发现就缺了个括号。或者事件名拼错了一个字母。电脑这东西,认死理儿。你给它指条明路,它准保给你个准信儿。你含糊其辞,它反手就甩你一堆异常。这种直来直去的脾气,反倒让人静下心了。说实话。有时候我挺羡慕这种机械逻辑的。人要是也这么干脆。哪来那么多弯弯绕绕?

书里没少强调调试和推演逻辑。我试着把一个大功能切成几块。像剥洋葱似的。一层层往下写。等程序最终跑通那下。其实没啥狂喜。就一种“哎,原来在这儿呢”的平静。这味儿我太熟了。前阵子接了个烂摊子项目。任务压得人喘不上气。后来照书里的法子。把大目标掰成每天能啃完的小碎块。心里那点焦虑居然自己就散了。做事和敲代码。压根是一套逻辑。谁也别指望一口气吞成个胖子。全得靠一步步试错。调优。生活本来就不是精装修。更像个大工地。边干边改才是常态。当然。这话听着轻巧。真落到头上还得咬牙扛。但拆开来看。事儿确实就没那么吓人了。

当然,书里也有让我直翻白眼的地方。它死磕代码规范。变量命名必须严谨。注释得写得明明白白。实际干活儿赶进度时。谁有空天天抠这些?但转念一想。这种近乎死板的讲究。磨的其实就是性子。它拽着你慢下来。盯着每一行字看它到底想表达啥。咱们现在都太急着要结果。却忘了很多事儿本来就得反复编译。调试。打补丁。与其总想着一把过。不如允许自己多摔几次跟头。反正生活里哪有完美的try-catch。真出了岔子。也就只能自己把异常兜住。拍拍土。接着往下走。不过我也得说句实在话。这书里的规范要是全照搬去搞互联网敏捷开发。估计项目能直接黄了。但作为新手打底。这死磕的劲儿。确实能救不少急。

现在再摸那本厚教程。封面都起毛边了。它没扯什么高深理论。就是老老实实教人怎么跟机器搭话。可正是这种不玩虚的笨功夫。让我在那些对着屏幕干瞪眼的夜里。摸到了点自己的节奏。屏幕暗下去前。光标还在一格一格闪。日子跟代码差不多。没写完。也没到头。就留了个空行。等下一段接着敲。反正敲到这儿。键盘没砸。人也没跑。这就挺好。