代码大全之一:用隐喻来理解软件开发

2020-07-05  本文已影响0人  ryankm

1、狗窝式的错误设计

        如果你想盖的是一个狗窝——只需要开车到木材店买些木头和钉子,不用一天时间,你的狗窝就搭起来了,哪怕是像上图一样,搭好后才想起来忘记了开个门或犯了个其它错误也没关系,随便改一下或干脆推翻重来就是,损失了最多也就是一个下午的时间。正如你写一个一千行的代码,哪怕是你采用了错误的设计思路,你还可以重构一下或推翻从头再来,也不会损失太多。

        2、建一幢房子与软件开发

    如果你是在建一栋房子,那这个建造过程就会复杂得太多,而错误或糟糕的设计则会导致致命的更为严重的后果。

隐喻:

建造房子

软件过程

你准备建一个什么类型的房子

问题定义

你需要和某个建筑师研究一下房子的整体设计,并得到批准

软件架构

你需要画出详细的建筑蓝图,并雇一个承包人来帮你实现

详细设计

准备好建造的地点,打好地基,搭建起房屋框架,砌好边墙,盖好房顶,通好水、电、煤

软件构建

房屋整体完成后,请庭院设计师,装修工、木工、泥工、水电工、油漆匠等对整体家装设计调整并美化一番

软件优化

请各种监察人员来验收、检查工地、地基、框架、布线等。

软件评审、详查

整体分析:

对于盖房子来说,建材原料的多少也很贵,但主要的浪费还是在人力上,把一堵已经砌好的墙推掉或后移,倒不在于浪费了多少砖头和水泥及沙子,重点是你需要付给工人更多的工钱以及打掉墙或移墙所需要付出的额外的工时,所以你必须尽可能的把房子设计好,才不会浪费时间在这些本来可以避免的错误上

相比起建房子来说,原料可能完全可以忽略,但人工的成本却极为昂贵

如果已经现在的东西,你绝对不会再自己去建造:

如你会买洗衣机、烘干机、洗碗机、冰箱、橱柜、餐桌、门窗、吊顶、浴室等这些现成的产品。

一流的设计会请人定制部分橱柜和整体家具风格等

相对于软件:你也不会自己去写那些已经现成的程序库:比如容器类、科学计算的函数、用户界面组件、数据库访问组件等或一些第三方公司已经做好的程序集组件等。
一流的软件也一样,你可能需要自己去重新编写并封装更快更高精度的科学计算类,或根据自己软件设计的统一用户界面及更便捷的数据访问组件,让它可以与你的软件产品做到更好的无缝对接。
适当的多层次规划对于建造房屋或软件都是很有益处的,它一方面可以将复杂的问题通过分层的思路简化问题的局部,让我们可以更加方便分工协作来完成一个复杂的项目,同时也更便于编码、测试和调试,避免因过分复杂而使整体项目变得更加混乱不堪

精心计划并不等于过度计划,千万不要陷入事无巨细的计划之中。如你可以前期把核心的架构尽可能想到,而像以后是用木地板还是地毯或磁砖,墙面是用什么材料,刷成什么颜色以及整体房间色彩如何搭配等则完全没有必要提前进行考虑。所以在计划时,你要根据你自己的项目:是一个三居室的小别墅还是一个摩天大楼,所需要的方法则完全不一样,通常你只需要用到一些灵活的、轻量级的方法,有时你则需要用到一些严格的、重量级的方法才可以达到你的目标。

上一篇 下一篇

猜你喜欢

热点阅读