《代码大全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卡或者代码注释--来保留设计成果了吗?
设计目标:
  你的设计是否充分体现出由系统架构层定义出并且推迟确定的事。
  你的设计被划分为层次了吗?
  你对把这一程序分解成子程序的方法感到满意吗?
  类与类之间的交互关系是否已经设计为最小化了
  类和子程序是否已经设计为能其他系统中重用
  程序是不是易于维护。
  设计是否精简,设计出来的每一部分都绝对必要吗?
  整体而言,你的设计更不有助于最小化偶然性的和本质性的复杂度吗?

大话数据结构读书笔记系列(六)树<上篇>

第6章 树 6.2 树的定义 之前我们一直在谈的是一对一的线性结构,可现实中,还有很多一对多的情况需要处理,所以我们需要研究这种一对多的数据结构——“树”。 树(Tree)是n(n≥0)个结点的有限集...
  • u010194538
  • u010194538
  • 2016年04月21日 20:48
  • 1365

《TCP/IP详解 卷一:协议》读书笔记--概述

1.2、分层 TCP/IP通常被认为四层协议系统 链路层:通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡 网络层:处理分组在网络中的活动,例如分组的选路(IP、ICMP和IGMP) 运输层...
  • kangaroo835127729
  • kangaroo835127729
  • 2015年09月30日 17:14
  • 5254

读书笔记_Effective C++_习惯C++

这是一本非常经典C++书籍,也是我在工作中发现自己C++上还有很多薄弱点的时候经常拿来充电的。这本书内容很多,讲了很多如何高效地使用C++的方法,有些地方自己也没能啃透,读过一遍后很多知识点容易忘记,...
  • John_cdy
  • John_cdy
  • 2015年05月04日 09:51
  • 2153

《代码大全2》读书笔记——变量(使用变量的一般事项)

“变量”在这里同时代表对象和内置数据类型。 2、要养成良好的创建变量的方法和习惯。 (1)对支持隐式变量声明的语言,在未声明变量时,编译器会自动声明变量,但这种做法不好。 (2)对支持隐式变量声...
  • xjbclz
  • xjbclz
  • 2016年06月25日 14:11
  • 275

代码大全2(读书笔记5)

56、程序员的一部分工作是教育老板 和合作者,告诉他们软件开发过程,包括在开始编程之前进行充分准备的重要性。 60、编程语言影响程序员的思维的证据随处可见。典型的故事类似下面的样子:“我们用C++编...
  • old_man_and_sea
  • old_man_and_sea
  • 2012年11月13日 16:01
  • 258

代码大全2(读书笔记16)

170、某些方法在检测缺陷方面比其他方法更加有效,而且不同的方法能找出不同类型的缺陷。   171、数据强烈提醒我们,如果项目的开发者要向更高的缺陷检测率发起冲击,他们需要综合运用各种技术。  ...
  • old_man_and_sea
  • old_man_and_sea
  • 2012年11月16日 11:21
  • 228

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

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

代码大全2读书笔记

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

代码大全2(读书笔记13)

141、Herbert Simon 报告了关于人类解决问题的一系列试验,发现人们并不总能自行找出解决问题的巧妙办法,即使这些办法很容易传授给他们(Simon 1996)。换句话说,就算你想再发明个车...
  • old_man_and_sea
  • old_man_and_sea
  • 2012年11月15日 16:19
  • 321

代码大全2(读书笔记3)

39、(代码大全2)许多强大的编程技术在被编程领域的大众接触之前,都已在学术论文和期刊里尘封了多年。   40、(代码大全2)有研究表明,一项研发成果从其诞生之日上进心,到进入商业实践阶段,通常要...
  • old_man_and_sea
  • old_man_and_sea
  • 2012年11月12日 15:51
  • 335
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《代码大全2》读书笔记
举报原因:
原因补充:

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