读书笔记—A Philosophy of Software Design(网摘)
《软件设计的哲学》是一本由John Ousterhout撰写的作品,他是TCL语言的设计者,并在斯坦福大学担任博士生导师。这本书通过对软件设计深入的思考和论述,提出了一些关于软件设计的哲学观点和方法论,旨在帮助软件开发者和设计者如何避免软件设计中的复杂性,并通过良好的设计实践来提高软件的质量。 1. 简单性原则: 书中强调软件设计应当追求简单性,避免复杂性。作者认为复杂性的本质在于系统难以理解以及难以修改。复杂性症状表现在新增特性时需要修改大量代码、开发人员需要掌握过多知识才能完成任务、新增或修改功能时不清楚应该改变哪些代码。复杂性通常是由依赖关系和代码晦涩难懂导致的,而且复杂性是随着系统演进而逐渐累积的。 2. 战术性编程与战略性编程: 作者提出了“战术性编程”和“战略性编程”的概念。战术性编程是指追求以最快的速度实现可工作的功能,这种方式往往会增加系统的复杂性,导致技术债务,是牺牲长远利益换取眼前利益的做法。相对地,“战略性编程”强调的不仅仅是实现可工作的代码,而且更看重好的设计。好的设计需要前期的投入,这种投资会在未来获得回报。对于如何取舍和权衡,作者认为需要开发团队达成共识。 3. 模块化和深度: 模块化是减少复杂性的关键手段之一。深度模块指的是那些提供简单接口和强大功能的模块。这种模块化有助于降低依赖关系和晦涩度。作者提出信息隐藏和泄漏的概念,认为应该尽可能地隐藏实现细节,只暴露必要的接口。通用功能的模块具有更高级的抽象,隐藏更多细节,从而具有更高的深度。 4. 分层抽象和抽象层级: 软件系统由多个层次组成,每一层都通过与上下层的接口进行交互,各层都有不同的抽象。例如,在一个典型的数据库、服务器、客户端模型中,数据库层的抽象可能是数据表和关系,服务器层可能是应用对象和应用逻辑,客户端层可能是用户界面和交互。如果不同的层拥有相同的抽象,则可能表明分层存在问题。作者提出将复杂性向下层移动的思路。 5. 合并与分离: 在软件分层设计中,存在合并与分离模块的决策问题。合并或分离的目的都是为了降低系统的复杂性。将系统拆分为更多的小型单元模块并不总是能降低复杂性,因为这样做可能会导致模块间关系复杂,降低系统的整体可理解性。 总结来说,《软件设计的哲学》这本书的核心观点是追求简单性,避免复杂性,强调在软件设计中应当减少依赖,采用好的封装和接口设计,以降低系统的复杂性。书中提到的战略性编程、模块深度、信息隐藏与抽象层级以及合并与分离模块等概念和方法,都是为了达到软件设计的最终目的——减少复杂性、提高可维护性和可扩展性。作者通过提出这些观点,为软件设计者提供了一套在实际工作中可以参考和应用的设计哲学。

















剩余15页未读,继续阅读


- 粉丝: 483
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- [江苏]保障房工程塑钢门窗安装施工工艺.doc
- 大数据环境下企业决策管理的困境与对策.docx
- 国内销售部003.doc
- 启动水处理泵房施工方案.pdf
- 如何做好保温材料A级防火处理.docx
- 辅导班资料共11页理解记忆.doc
- 房屋建筑工程质量控制要点.doc
- 保利国际广场超高层方案78P.pdf
- 基于Spark的大数据分析工具Hive的研究.docx
- 单片机电子密码锁设计方案实验.doc
- 第五章--成本法及其应用.ppt
- 基于51单片机的数字温度计设计.doc
- 安全月活动计划.docx
- 12#、16#楼木工承包合同.doc
- 某钢筋混凝土倒锥壳保温水塔施工方案.doc
- 管网布置等水压线.doc


