C接口与实现---之一

在erlang上工做久了以后发现本身对底层的知识愈来愈模糊了,因此决定最近从新学习一下C语言,在有必定基础的状况我以为应该找一个更高效编程的书来读读(一直在想怎么写出更优雅的代码),翻翻本身的电子书库就找到了《C接口与实现》在优雅编程方面这确实是一本很好的书,书中讲到了文学化的编程。这里是一个书中比较好的内容的摘抄和笔记。
变量命名对每一个人程序员来讲是很头痛的,一个变量命名的好坏也就基本上体现出这我的的编码素养了。“In general, longer, evocative names are used for global variables and routines, and short names, which may mirror common mathematical notation, are used for local variables.”程序员

这里举了一个很好的理解在for循环中的局部变量i取了一个很冗长的名字,这样在代码的可读性上面就损失了不少。算法

变量在第一次使用以前声明, 代码的长度不要超过一页 (14寸笔记本一屏最合适了)。编程

尽可能遵循代码就是最好的注释的原则,comments只出如今数据结构/算法的说明中。数据结构

软件的可靠性要比效率更重要(其实这一点咱们很容易忽略掉,有时候咱们但愿软件运行的更快一味地去优化,若是此时引入了一个crash的话对客户是灾难性的,还有一点就是legacy broken比一个新的feature或者性能提升十倍更可怕)性能

书中对宏定义和条件编译的理解颇有意思,还几个以前看过一段代码,里面对各个平台定义了不一样的宏,’#ifdef #end看着确实难受, 使用交叉编译确实是一个很好的注意。学习

习题 1.1
<scan forward to a nonspace or EOF 6 >的目是找个一个单词的开始位置,linenum在这里++有如下几个目的:优化

单词不会跨行出现,在找一个单词的开始位置的时候发现一个‘n’就说明以后出现的单词是在下一行,linenum++这是一个很合理的过程。
若是你在7以后发现一个‘n’以后+1可能出现的结果就是输出此次返回的word的时候linenum +1了。
习题 1.2
这里主要是判断若是单词重复出现的话继续去取下一个单词,以后看下若是大于等于2则输出便可。编码

-END-spa

相关文章
相关标签/搜索