【读书笔记】——《代码大全》(三)

本周选读了设计构造块与使用变量的部分内容。

Design in Construction

设计是讲求层次的。

第二层“分解为子系统和包”的主要任务是确定如何把程序分为主要的子系统。本周结束的结对编程作业中core和ui就相当于整个软件的两个子系统。作者指出,在这一层次中,有一点非常重要,就是制定不同子系统之间相互通信的规则。只有限制子系统之间的通信,每个子系统的存在才更有意义。通过这次结对编程的实践,对这一点有了更深的理解。没有core和ui之间接口的规则制定,ui难以和core组对接,这样ui也就没有了意义。

 

作者还讨论了封装和继承的特点。本次结对对接的过程中,我们一开始尝试对接的时候,使用的方法是把对方的代码直接复制到我们的代码中,并未使用封装直接调用。事实证明,这并不是一个高效率的方法。封装帮助你管理复杂度的方法是不让你看到那些复杂度。我们只要清楚地知道了接口是怎样设置的,就可以调用动态链接库。

 

寒假里学了一点python,所以对继承有一定的理解。基本员工是一个类,全职员工与兼职员工拥有基本员工的大部分属性,同时又有自己的特殊点,这时候可以定义全职员工类和兼职员工类,继承基本员工类的某些特征。合理地使用继承,可以简化编程的工作。

 

一个好的接口,就像是冰山的尖儿一样,尽可能少地暴露其内部工作机制。当然,要保证内部工作的逻辑等没有错误。

 

General Issues in Using Variables

做了一下书上的数据认知测试,自己对数据结构的知识掌握得还不够。创建变量听起来很简单,但在一个细小的方面养成一个好的习惯可以省去时间和麻烦。

 

变量初始化原则:

1.    在声明变量的时候初始化

2.    在靠近变量第一次使用的位置初始化它

3.    在靠近第一次使用变量的位置声明和定义该变量

这其中体现了就近原则。如果在程序的一开始就声明和初始化所有的变量,那么等到我们要使用它的时候就很难确定它的值是否被修改。

4.    可能的情况下使用const关键字

这适用于变量初始化以后值不再发生改变的情况。

5.    注意计数器和累加器的初值

6.    在类的构造函数里初始化该类的数据成员

7.    检查是否需要重新初始化

8.    一次性初始化具名常量

9.    检查输入参数的合法性

这点在本次的结对编程作业中得到了很好的体现。

10. 使用内存访问检查工具来检查错误的指针。

指针的使用太容易发生错误了。

 

另一句耳熟能详的话是尽量避免使用全局变量。全局变量的跨度和生存时间都很长,这样既增加了错误发生的可能性,也降低了程序的可读性。减小作用域的一个很有效的方法是,从一开始就尽量让变量局部化,考虑它所作用的最小的范围,而不是一开始就把它设为全局变量。全局变量通常是无奈之举。

 

posted @ 2018-04-19 15:57  Esther_Xr  阅读(145)  评论(1编辑  收藏  举报