摘要:
1. 好的抽象 1.1 类的接口应该展现一致的抽象层次 在考虑类的时候有一个很好地办法,就是把类看做一种用来实现抽象数据类型的机制。每一个类应该实现一个 ADT,并且仅实现这个 ADT。如果你发现某个类实现了不止一个ADT,或者你不能确定究竟它实现了何种 ADT,你就应该把这个类重新组织为一个或 阅读全文
摘要:
1. 抽象数据类型 抽象数据类型(ADT,abstract data type)是指一些数据以及对这些数据所进行的操作的集合。这些操作即向程序的其余部分描述了这些数据是怎么样的,也允许程序的其余部分改变这些数据。 “抽象数据类型”概念中“数据”一词的的用法有些随意。一个ADT可能是一个图形窗 阅读全文
摘要:
设计实践 1.迭代 打你你在备选的设计方案之中循环并且尝试一些不同的做法时,你将同时从高层和低层的不同视角去审视问题。你从高层视角中得到的大范围途径会有助于你把相关的低层细节纳入考虑。你从低层视角中所获得的细节也会为你的高层决策奠定基础。这种高低层面之间的互动被认为是一种良性的原动力,它所创建的 阅读全文
摘要:
软件的首要技术使命:管理复杂度 1. 本质的难题 因为从本质上说软件开发就是不断地去发掘错综复杂、相互连接的整套概念的所有细节。其本质性的困难来自很多方面。 必须去面对复杂、无序的现实世界 精确而完整的识别出各种依赖关系与例外情况 设计出完全正确而不是大概正确的解决方案 ... 2.管理复杂度的 阅读全文
摘要:
1. 软件开发食物链 :程序员是软件食物链的最后一环。架构师吃掉需求,设计师吃掉架构,而程序员则消化设计。 2. 需求变更 “一旦客户接受了一份需求文档,就再也不做更改”是一个美好的愿望。然而,对一个典型的项目来说,在编写代码之前,客户无法可靠地描述他们想要的是什么。问题并不在于客户是低级生物。 阅读全文
摘要:
1.隐喻的价值 隐喻的价值绝不应低估。隐喻的优点在于其可预期的效果:能被所有的人理解。不必要的沟通和误解也因此大为减低,学习与教授更为快速。实际上,隐喻是对概念进行内在化(intemalizing)和抽象(abstracting)的一种途径,它让人们在更高的层次上思考问题,从而避免地层次的错误。 阅读全文
摘要:
1. 软件构建活动中的具体任务 验证有关的基础工作已经完成,因此构建活动可以顺利地进行下去 确定如何测试所写的代码 设计并编写类(class)和子程序 创建并命名变量(variable)和具名常亮(named constant) 选择控制结构(control structure),组织语句块 对你的 阅读全文