前段时间把《代码大全》略略翻了一遍,网上down的电子书,省了笔书费——当然这是不对的,无论从版权的角度还是从爱护眼睛的角度。英文版的书名为Code Complete,从书的内容来看,我更愿意把书名译作《代码写作攻略大全》。这确实是一本攻略大全,最佳实践大全。书中第2章介绍了软件开发中的“隐喻”。软件开发是相对较新的活动,通过已有的活动来理解软件开发,兴许会更容易而深刻。作者最为认同的隐喻是“建造软件”,本文不妨以下围棋喻之。
在软件开发中,大量的工作需要严谨的逻辑思维——如写个子程序,写个算法(相当于围棋中的局部计算);而设计则需要发散思维,好比围棋中确定行棋的方向,策略等战略决策。“设计是一个险恶的问题”,而围棋中的战略决策亦充满变数;“设计是个了无章法的过程”,而围棋中的战略决策亦无章法可寻——那些雄奇的构想,鬼知道是怎么出来的。“设计是不d