WHAT? 最简单的控制流:即按照先后顺序放置语句与语句块 WHY? 尽管组织直线型的代码是一个简单的任务,但代码结构上的一些微妙之处还是会对代码质量.正确性.可读性和可维护性带来影响 HOW? 必须有明确顺序的语句 使依赖关系变得非常明显 使子程序名能突显依赖关系 利用子程序参数表明依赖关系 用注释说明 用断言/错误处理代码来检查依赖关系 顺序无关的语句 使代码易于自上而下的阅读,将相关的代码组织到一起 // bad MarketingData marketingData; SalesData…
重读code complete 说说代码质量 2014年的第一篇文章本来计划写些过去一年的总结和新年展望,但是因为还有一些事情要过一阵才能完成,所以姑且不谈这个,说说最近重读code complete 的收获吧. 记得第一次读code complete 还是刚毕业的时候,身边好多朋友极力向我推荐此书,于是我就买了一本读起来,可能是当时功力不够,读起来总是觉得没啥味道,而且极为枯燥,总觉得不如<深入浅出MFC>,<CLR Var C#>,<Windows Internals&g…
基本数据类型: 1. 程序主体中仅能出现的数字就是0和1,除此之外,所有的数字都要用宏定义或者const类型,用清晰的变量名描述用途 2. 预防除零错误, assert(denominator!=0)或者其他 3. 显式进行类型转换 4.避免不同类型间比较 5.注意编译器警告 对于整数,需要注意:整数除法(去尾法),检查整数溢出,检查中间结果溢出 对于浮点数,需要注意:避免==的判断,需要加一个阈值,例如 for(i=0;i<10;i++) a + = 0.1; if(a==1.0) 因为最后的…
最近在看code complete,学习了一些东西,作为点滴,记录下来. 关于类: 类的接口抽象应该一致 类的接口要可编程,不要对类的使用者做过多的假设.不要出现类似于:A的输入量一定要大于多少小于多少,一定要在某个函数前call之类的限制,而应该在assert等地方加入这些判断,让代码去做限制,而不是注释. 代码阅读的次数要比写的次数多得多 类的成员变量表征类拥有怎样一个属性 类的继承表征类还可以有另一个特殊的版本 类用到的其他类的次数叫做扇入(fan in),越少越好 要在构造函数中对所有的…
Code Complete 读后总结和新的扩展阅读计划 用了一年时间终于将代码大全读完了,在这里做一个简单的总结,并安排下一阶段的扩展阅读计划. 1.选择代码大全作为我程序员职业入门的第一本书,我认为是很正确的.这本书语言生动,擅于用隐喻说明深刻的编程原理,虽然并不是写给新手看的,但作为一个新手,我依然从中学到了很多.    2.这本书有很多一针见血的论述:设计是一个启发式过程:编程的最大难题是解决其复杂性:要深入一种语言编程而不是在一种语言上编程,等等.    3.实践是这本书的核心,它提供了…
Debugging Go Code with GDB  使用GDB调试go代码 Introduction Common Operations Go Extensions Known Issues Tutorial Getting Started Inspecting the source Naming Setting breakpoints Inspecting the stack Pretty Printing   The following instructions apply to the…
http://gaohaixian.blog.163.com/blog/static/123260105201142645458315/写任何编程代码,不同的开发者都会有不同的见解.但参考一下总是好的,下面是来自Javascript Toolbox发布的14条最佳JS代码编写技巧,Sofish翻译(1,2). 1. 总是使用 ‘var’ 在javascript中,变量不是全局范围的就是函数范围的,使用”var”关键词将是保持变量简洁明了的关键.当声明一个或者是全局或者是函数级(function-…
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码) ASCII简介 ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号. 中国在ASCLL里面…
WHAT? 提高代码运行速度的方法,减少代码的资源占用 WHY? 这里提出的都是“可以尝试的”方法,有的或许在你的环境根本不起作用,有的则能实实在在产生很好的效果 HOW? Logic - 逻辑 在知道答案后停止判断 按照出现频率来调整判断顺序:让运行最快和判断结果最肯能为真的判断先行,即,让程序更容易进入常见状况的处理 用查询表代替复杂表达式 惰性求值:lazy loading Loop - 循环 将判断外提 合并:将两个相同计数器的循环合并 展开:循环被完全展开后,将具有更快的速度 尽量减少…
WHAT? 本章讨论程序性能调整问题.但是对用户来说,程序员按时交付软件,提供一个清爽的用户界面,避免系统经常死机常常比程序性能更加重要 WHY? 在程序设计这种文化中,编写出能够节省几微秒的代码可以证明你很酷-- HOW? Pareto法则 即80/20法则,指你可以通过20%的努力获取80%的成果 一些无稽之谈 在搞基高级语言中,减少代码行数可以加快代码执行速度 特定运算可能比其他的更快,代码规模也较小:在某个环境下提升程序性能的方法放到另一个环境中可能会损害程序性能.在调整代码的时候你实际…