第11章 变量名的力量
要求使用短变量名是早期编译器的遗留物
不要采用给变量后后面加数字后缀的方法,请使用数组来代替一组单个变量
Key Points:
好的变量名是提高程序可读性的一项关键要素。对特殊种类的变量,比如循环下标和状态变量,需要加以特殊的考虑。
名字要尽可能的具体。那些太模糊或者太通用以至于能够用于多种目的的名字通常都是很不好的。
名字规则应该能够区分局部数据、类数据和全局数据。他们还应当可以区分类型名、常量、枚举类型名字和变量名。
无论做那种类型项目,你都应该采用某种变量命名规则。你所采用规则的种类取决于你的程序规模,以及项目成员的人数
现代编程语言很少需要用到缩写。如果你真的要使用缩写,请使用项目缩写词典或者标准前缀来帮助理解缩写。
代码阅读的次数远远多于编写的次数。确保你所取的名字更侧重于阅读方便而不是编写方便
第12章 基本数据类型
一堆相差较大的浮点数求和,应该先排序,然后从小到大依次相加,以防止大数吃小数。
如果需要,程序中出现0和1的MagicNumber是可以接受的,其他的都可以换掉
避免硬编码字符串
在程序生命期中尽早决定国际化/本地化策略,尽早决定是否采用Unicode
calloc在分配内存同时自动初始化为0,malloc仅负责分配内存,_alloca和_malloca则是在栈上进行空间分配
把枚举类型的第一个元素留作非法值
像C++这样要求通过头文件来分发定义的语言是较难实现真正的信息隐藏的
Key Points:
使用特定的数据类型就意味着要记住适用于各个类型的很多独立原则。
如果你的语言支持,创建自定义类型会使得你的程序更容易修改,并更具有自描述性
当你用typedef或者其等价方式创建了一个简单类型的时候,考虑是否更应该创建一个新的类
第13章 不常见的数据类型
每一个指针都包含两部分:内存中的某处位置;如果解释该位置中的内容。
在与指针分配相同的作用域中删除指针
Key Points:
结构体可以使得程序更简洁、更容易理解,以及更容易维护(对没有类概念的语言来说)
每当你打算使用结构体的时候,考虑采用类是不是会工作的更好
指针很容易出错。用访问器子程序或类以及防御式编程实践来保护自己的代码
避免用全局变量,不只是因为它们很危险,还是因为你可以用其他更好的方法取代它们
如果你不得不使用全局变量,那么就通过访问器子程序来使用它。访问器子程序能为你带来全局变量所能带来的一切优点,还有一些额外好处