《代码大全2》读书笔记

原创 2011年01月20日 13:15:00

软件的复杂性来自本质性和偶然性

 

没有人的大脑装得下一个现代的计算机程序,所以必须把程序组织起来,一次只关注一小部分。

 

信息隐藏要隐藏的是复杂度和变化源

 

concept blockbusting有一些设计的习题,有助于锻炼智力

How To Solve It: A New Aspect of Mathematical Method

How to Solve It: Modern Heuristics

 

 

警惕从语义上破坏封装,主要是指函数执行一些接口上无法知道的东西

 

 

核对表:架构

针对各架构主题

  程序的整体组织结构是否清晰?是否包含一个良好的架构全局观(及其理由)?

  是否明确定义了主要的构造块(包括每个构造块的职责范围及与其他构造块的接口)?

  是否明显涵盖了“需求”中列出的所有功能(每个功能对应的构造块不太多也不太少)?

  是否描述并论证了那些最关键的类?

  是否描述并论证了数据设计?

  是否详细定义了数据库的组织结构和内容?

  是否指出了所用关键的业务规则,并描述其对系统的影响?

  是否描述了用户界面设计的策略?

  是否将用户界面模块化,使界面的变更不会影响程序其余部分?

  是否描述并论证了处理I/O的策略?

  是否估算了稀缺资源(如线程、数据库连接、句柄、网络带宽等)的使用量,是否描述并论证了资源

管理的策略?

  是否描述了架构的安全需求?

  架构是否为每个类、每个子系统、或每个功能域(functionality area)提出空间与时间预算?

  架构是否描述了如何达到可伸缩性?

  架构是否关注互操作性?

  是否描述了国际化/本地化的策略?

  是否提供了一套内聚的错误处理策略?

  是否规定了容错的办法(如果需要)?

  是否证实了系统各个部分的技术可行性?

  是否详细描述了过度工程(overengineering)的方法?

  是否包含了必要的“买 vs. 造”的决策?

  架构是否描述了如何加工被复用的代码,使之符合其他架构目标?

  是否将架构设计得能够适应很可能出现的变更?

架构的总体质量

  架构是否解决了全部需求?

  有没有哪个部分是“过度架构/overarchitected”或“欠架构/underarchitected”?是否明确宣布

了在这方面的预期指标?

  整个架构是否在概念上协调一致?

  顶层设计是否独立于用作实现它的机器和语言?

  是否说明了所有主要的决策的动机?

  你,作为一名实现该系统的程序员,是否对这个架构感觉良好?

 

核对表:软件构造中的设计
设计实践
  你已经做过多次迭代,并且从众多结果中选择最佳的一种,而不是选择第一次尝试的结果吗?
  你尝试用多种方案来分解系统,以确定最佳方案了吗?
  你同时用自下而上和自上而下的方法来解决问题了吗?
  为了解决某些特定问题,你对系统中的风险部分或下熟悉的部分创建过原型、写出数量最少胡可抛弃的代码了吗?
  你的设计方案被其他人检查了吗?
  你一直在开展设计,直到实施细节跃然纸上了吗?
  你用某种适当的技术--比如说wiki,电子邮件,挂图,数码照片,UML,CRC卡或者代码注释--来保留设计成果了吗?
设计目标:
  你的设计是否充分体现出由系统架构层定义出并且推迟确定的事。
  你的设计被划分为层次了吗?
  你对把这一程序分解成子程序的方法感到满意吗?
  类与类之间的交互关系是否已经设计为最小化了
  类和子程序是否已经设计为能其他系统中重用
  程序是不是易于维护。
  设计是否精简,设计出来的每一部分都绝对必要吗?
  整体而言,你的设计更不有助于最小化偶然性的和本质性的复杂度吗?

相关文章推荐

代码大全2读书笔记

代码大全2读书笔记       作者写这本书的首要目的,就是希望缩小本行业中一般商用实践与大师级人物及专家们之间的知识差距。许多强大的编程技术在被编程领域的大众接触之前,都已在学术论文和期刊里尘封...

【把经典读薄】《代码大全2》读书笔记之一 使用变量的一般事项

代码大全第二版 第十章 使用变量的一般事项 读书笔记 General Issues in Using Variable   把第十章作为开篇重读《代码大全》,并做好详细的读书笔记,希望它能给我全新的收...
  • zhmxy555
  • zhmxy555
  • 2012年08月02日 21:06
  • 14438

代码大全第二版读书笔记 第三部分-变量 十一、变量名的力量

变量名的力量(P259) 1.选择好变量名的注意事项 一个好的变量名是可读的、易记的和恰如其分的。 1)最重要的命名注意事项 为变量命名时最重要的考虑事项是,该名字要完全、准确地描述出...

【读书笔记】代码大全30章:开发工具

设计工具 UML 源代码工具 IDE 好处 编辑的时候能检测出编译错误集成源代码控制、构建、测试和调试工具能查看整个项目的轮廓跳转到指定的类、方法或变量跳转到使用某个类、方法...

《代码大全》读书笔记——重构

重构         首先说一下重构的概念,重构是一个过程,是在不改变代码外在行为的前提下,对代码进行修改,以改进程序的内部结构,达到提高软件的质量和性能,使程序的设计和架构更加合理,提高软件的可扩展...
  • fnmdgp
  • fnmdgp
  • 2011年01月03日 23:15
  • 295

《代码大全》读书笔记及随想(day07)

《代码大全》读书笔记及随想(day07)

哪种性格最适合IT行业?【读书笔记】代码大全33章:性格在软件领域中的作用

在软件开发中,性格可以决定一个人的能力。虽然我们不能提升自己的智商,但是性格方面我们是可以作出一些改变的。从某种程度上说,一个人的性格决定了他能不能成为软件方面的专家。所以我们应该对自己负责,让自己变...

【读书笔记】代码大全24章:重构

什么时候该重构 重复代码函数太长循环太长或嵌套太深低耦合的类接口的抽象级别不一致参数列表太长修改不知道在哪个类中进行,好像两个类中都可以改变一个地方要同时改变多个类改变一个类的继承要同时改变多个...

代码大全第二版读书笔记 第三部分-变量 十二、基本数据类型 十三、不常见的数据类型

基本数据类型(P291) 1.数值概论(P292) 避免使用“神秘数值”如果需要,可以使用硬编码的0和1预防除零错误使类型转换变得明显避免混合类型的比较注意编译器的警告 2.整数(P...

【读书笔记】代码大全32章:自文档技术

外部文档 大项目的文档往往放在源代码之外单元开发文件:是一种非正式的文件,给开发人员在开发的时候查看详细设计文档:描述类/方法级别的设计细节,是一种正式文档 良好的编程风格可以作为文档到底要不...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《代码大全2》读书笔记
举报原因:
原因补充:

(最多只允许输入30个字)