07代码大全2阅读笔记

Posted qwb0614

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07代码大全2阅读笔记相关的知识,希望对你有一定的参考价值。

第十章 变量

 

 隐式声明可能带来错误。

  应该尽量避免隐式声明(问题:python中无法避免隐式声明);遵循良好的命名规则并经常检查。

 

 变量初始化策略
 在声明时初始化。

 第一次使用时初始化。

 理想情况下,在第一次使用时生命并初始化变量。

 可能情况下使用final和const。

 特别注意计数器、累加器。

 在类的构造函数中初始化其成员。

 检查是否需要重新初始化。

 由编译器初始化所有变量。

 注意编译器的警告信息。

 如果用输入数据初始化变量,记得检查输入信息合法性。

 使用内存访问工具检查指针是否错误。

 程序开始时将工作内存初始化为特定值,已检查可能的错误。

 

“攻击窗口”:两次引用同一变量中间的间隔期间,变量可能被修改。

  为了减少“攻击窗口”,尽量使变量局部化;减小变量引用之间的跨度;减少变量存活时间,理想的存活时间为第一次引用到最后一次引用。

 减小变量作用域的一般原则:

 循环变量应该在循环开始中再定义,即for(int i=0; …; …)而非一开始就定义一个i。

 将相关联的、涉及同一些变量的代码放在一起。必要的话,抽出来作为一个子程序。

 采用最严格的可见性,需要的话再进行拓展。

 

 变量的持续性:有些时候变量已经“死亡”,但引用时仍然返回原值,使人误以为没有错误。

  应该:

 用调试代码或断言检查错误的变量取值。

 抛弃变量时设定其为不合理的值,如delete指针后将指针设为null。

 编写代码时假定其无持续性。

 养成使用变量前声明并初始化变量的习惯。

 

 绑定时间:在编写时绑定(硬编码)不灵活、难拓展。应该晚绑定。

 晚绑定时间:

 在编译时绑定:如宏定义、const、具名常量。

 加载时:从外部数据源读取数据。

 对象实例化时。

 调用函数时。

 

 数据结构和处理数据的控制结构可以一一对应。顺序数据,如若干个不同数据,对应顺序结构。选择数据结构对应选择结构。迭代式数据结构,如容器、文件,对应循环结构。

 

 一个变量只应有一个功能,避免隐含含义。

 

代码大全阅读笔记01

  又是一本经典的书《代码大全》,从豆瓣上看到了很多的好评,看了一点感觉大全确实是如其名,一路下来都是很实用的东西,有些虽然都接触到了,但是再看一遍仍旧是收益很大。首先,软件构建的核心就是管理复杂度。虽然书中有不少的篇幅来讨论变量、语句等等这些编程的基本要素,还包括代码改善和调整的策略和方法,可谓不无巨细。不过深入理解一下,这些内容都是围绕着上面这句话展开的,也就是软件构建的核心就是管理复杂度。而这一目标产生的根源就在于人脑智力同软件项目复杂程度之间的矛盾。书中常常会提到几个数字,差不多在6、7左右变化,因为这是人脑智力管理的极限,多了,就管不过来了,呵呵。所以,书中会有一些结论性的建议。比如构建可工作的类,内部成员应该控制在7(+-)2,也就是5个或者9个左右,如果都是Native Type的话,9个成员变量能管的过来,如果都是对象成员的话,5个也能保证你的头脑始终清晰。还有,比如程序中的嵌套结构,类似于If,循环啊什么的,要保持嵌套层次不能多于6层,而据实际调查,一般3层以上的嵌套就会使程序员非常的困惑和抓狂了;还有比如子程序的参数个数尽量保持在7个以下,要不然也记不住,别说7个了,没有现代IDE的帮助,我连4个以上的参数我都记不住,呵呵。

  我想满足这些指标并不是很难的事情,而这些东西也给出了对于代码进行改善时候可以依据的标准。不过想要管理这种复杂度,从作者的书中总结一下,具体可能是以下几点:第一,分割,既然大脑管不过来,那就把系统进行分割,也就是从设计角度上抽象出若干部分,每次让大脑focus在一个部分上,这点我是有深刻体会,虽然我现在完全自己做的东西超不过15000行,不过也不能妄想自己把所有的部分都记住,如果抽象的不好的话,我就特别头疼,每天在代码中翻来翻去的,效率非常低;第二,清晰理解,其实这点跟上面一点是差不多的,只有清晰理解了抽象的含义,才能做好每个封装每个接口,这样在关注别的抽象部分的时候,其他部分需要记住和管理的更清晰也更简洁,因为不需要关注其他部分是如何实现的,只要按照接口和抽象来做就好了;第三,清晰表达,在程序中应该清晰表达逻辑和抽象含义,也就是增加程序的可读性,唉,这点太重要了,书上也围绕着这个不断的论述,上面提到那些事无巨细的部分反复的说着这一点,甚至连命名都有专门的一章来讨论。

  这本书我并不打算一口气一遍,这可能太过于囫囵吞枣,那样可能得到的不会太多,所以,还是慢慢啃,我想笔记的作业性质不应该那么重,老师也是在催促我们学习,真正学不学当然还是看自己,反正愿意骗自己没人会知道也没人会提醒你!

以上是关于07代码大全2阅读笔记的主要内容,如果未能解决你的问题,请参考以下文章

《代码大全》阅读笔记-2-用隐喻来更充分地理解软件开发

《代码大全》阅读笔记-3-三思而后行:前期准备

代码大全阅读笔记01

代码大全阅读笔记02

代码大全阅读笔记03

《代码大全》阅读笔记二