第二部分:建立高质量的代码java
第五章:软件构建中的设计linux
“在大型项目中,设计可能会详细到让编码工做近乎机械化”程序员
“在小型项目中,设计可能就是指用伪代码写个类的接口,或者询问旁边的程序员那个模式好,画几个类的关系图”编程
——基本没有经历过大型项目,小型项目描述的过程跟我接触的很是的类似,最多多个设计评审。网络
“当没人知道对一处代码的改动会对其余代码带来什么影响的时候,项目也就中止进展了”架构
——得多复杂,多糟糕的项目才会到这个地步啊,没有体会过。编程语言
由于项目主要是网络的,没有什么雇员、雇主之类很容易抽象的对象,因此制做的类基本都是c子程序和数据的集合体。不知道是否是不对,不过也没感受出来不对啊。ide
“信息隐藏在不断增加、大量变化的环境里尤为有用”工具
刚开始的代码里面把全部的私有变量都加了get、set,可是慢慢就以为麻烦,所有都公开了,感受项目一我的维护,所有私有变量都封装,有时候没感受出来什么意义,若是个别须要特别处理的变量才封装成方法。性能
不知道得大到什么程度、或者变更到什么程序,才有明显的意义。或者说,我没有感受出太大的好处。
“不要使用布尔变量作状态变量,请使用枚举”
——这个比较有道理,由于若是从2种变成为3种类型,修改是个累人的活。
P117 写总结邮件这点不错,每次讨论后,常常有遗忘,或者有人记错了,致使争论和疑问。
第六章:能够工做的类
“不懂得ADT(抽象数据类型)的程序员只是把稍有关系的子程序和数据堆在一块儿,叫作类。”
——感受本身就是这样,不过看完了这章,感受就是教你把私有成员隐藏起来,隐藏实现细节,除了接口所有黑盒。
继承与包含,我用的包含最多,继承最少。
一直讨厌使用继承,最大的缘由是用source insight看代码不方面,总是跳到基类的方法里面去了。不知道什么阅读工具会比较好。
“当你想让基类控制接口,用继承。当你想染本身控制接口,用包含”
用继承主要是放在list里面方便,不过我平时都是用一个类,而后包括一个void*,来访那些包含的类,再用一个type变量标记是哪一种类。
P155
“避免建立万能类”——有时候视图控制数据分离,难道不是这种结构做为过渡吗?
“消除可有可无类”——类比结构体放数据方便不少,为何不能出现专门放数据可是没有行为的类?
C++中,只有virtural的方法才能被覆盖,java默认方法都能被覆盖。
第七章:高质量的子程序
子程序的参数不要超过7个,能够作成结构体,这样增长一个参数的时候会比较方便。
不要出现神秘值,用常量定义或者用枚举来替代100,4.0,3.14之类的常量。
子程序要尽可能单一而明确的任务。
避免把输入值当作工做变量。
子程序能够避免代码重复,更易懂,提升可移植性,将来去优化也比较方便。
第八章:防护式编程
“主要思想:传入错误的参数也不怕”
断言是不错的方法,可是linux里面用断言感受不是很好,由于屏幕打印有什么用处,还不如打印到日志里面去,狠点的话,打印日志后退出程序好了。
处理错误有多种状况,不错网络状况估计就是报警和重试了吧。
在正确性和健壮性之间选择。
“只有真正的例外才抛出异常,异常应该和断言同样,是永远不该该发生的事情”
——这个好像跟com不符合哦,com主要是抛出异常的,尤为是解码的com,抛出的异常种类那叫一个多。
——这里的理由是“异常弱化的了封装性”
P203页批评程序员用异常返回错误是为用而用
——记得之前我上学的时候,一个同窗还说他师兄是真正的面向对象,全部返回错误值的地方都用异常处理,当时咱们崇拜了一阵子。不过这里也未必全对,毕竟是一本书。
“删除一个对象以前把它填满垃圾数据”
——够狠,也是个好主意,这样不会出现有时候出错有时候正常的状况了,若是之后再试图使用确定崩溃。
第九章:伪代码编程
一、使用天然语言来精确描述特定的操做。
二、避免使用目标编程语言中的语法元素。(这样会受制于程序语法上的约束)
三、先超出语言来描述解决问题的意图。
四、再以足够低的层次上编写伪代码,以即可以近乎自动的从它生产代码。
五、写好代码后,能够把伪代码当作注释存在。
架构应该提早指明多少资源可用,好肯定性能仍是可读性优先。
“写一个子程序前先考虑怎么测试它”——感受很困惑,也没有举出例子,不就是检查输入输出吗?还能考虑什么?