摘要:
抽象数据类型是指一些数据以及对这些数据所进行的操作的集合 接口/API先行 ——Tacey 只有一个实例的类是值得怀疑的 不要创建任何并非绝对必要的继承结构 继承层次尽量限制在3层之内 如果可能,应该在所有的构造函数中初始化所有的数据成员(防御式编程实践) 优先使用深拷贝 创建类的原因 + 为现实世 阅读全文
摘要:
无论是以何种方式来进行设计,小型项目也能和大型项目一样从精心的设计之中获益,而如果能认识到设计是一项明确的活动,你就更会获益匪浅。 设计过程充满了不确定性,因此设计技术也趋于探索性质 软件的首要技术使命:管理复杂度 设计特征: + 最小复杂度 + 易于维护 + 松散耦合 + 可扩展性 + 可重用性 阅读全文
摘要:
核对表:主要的构建实践 编码 + 你有没有确定多少设计工作将要预先进行,多少设计工作在键盘上进行(在编写代码的同事)? + 你有没有规定诸如名称、注释、代码格式等“编码约定” (编码规范) + 你有没有规定特定的由软件架构确定的编码实践,比如如何处理错误条件,如何处理安全性事项,对于类接口有哪些约定 阅读全文
摘要:
问题定义只定义了问题是什么,而不涉及任何可能的解决方案。 如果没有好的需求,你可能对问题有总体的把握,但却没有集中问题的特定方面。 需求像水。如果冻结了,就容易在上面开展建设 ——无名氏 (经常性无法预期的需求变更会伤害项目的开发者,从而毁了项目) 软件架构是软件设计的高层部分,适用于支撑更细节的设 阅读全文
摘要:
隐喻的价值绝不应该被低估。隐喻的优点在于其预期的效果:能被所有的人理解。不必要的沟通和误解也因此大为降低,学习与教授更为快速。实际上,隐喻是对概念进行内在化和抽象的一种途径,它让人在更高的层面上思考问题,从而避免低层次的错误。 + 隐喻是启示而不是算法,因此他们往往有一点随意。 + 隐喻把软件开发过 阅读全文
摘要:
首先要明确开发计算机软件是一个复杂的工程,并不比建设高楼大厦简单。这项活动和传统的土木工程类有相似的部分,也有迥然不同的地方。 主要有下面的几种活动(根据进程推动顺序): + 定义问题 + 需求分析 + 规划构建 + 软件架构/高层设计 + 详细设计 + 编码与调试 + 单元测试 + 集成测试 + 阅读全文