寒假根据老师要求读一本书,上网搜查了下,好多人对《代码大全》这本书着重提出,这本书教的就是如何编写高质量的代码。高质量的代码既可以说是一个节 省成本的问题,也可以说是一个软件安全性的问题。
为了使我们能够编写出高质量的软件,书中讲述了软件构建的 方方面面,详细讨论了源代码的可读性,类和函数命名、变量命名、数据类型和控制结构、 代码布局等编程的基本要素,同时书中展示了大量高质量的代码作为示例,同时也有低质 量的代码来做比较。这对于已经有一定的编程基础。
断言是什么? 所谓的“断言”就是指开发期间使用的、让程序运行时进行自检的代码。通俗的说就是一个 过程或者一个函数是否达到预期目的,达到了预期目的就返回True 否则就是False。今天 阅读之前并不知道什么是断言,今天算是给了个定义。对于大型的复杂程序或者可靠性要求 较高的程序来说,断言是非常重要的,它能帮助程序员排查出错误。建立你自己的断言机制 就我目前所学习过的语言来说基本上都支持断言。本书定义了什么是软件构建、软件构建的重要性、软件构建必须要做的准备工作。
变量命名要能完全、准确的描述该变量所代表的事物。切记严禁使用a、aa、x1...类似命名。代码要有意识的模块化编写,这也是为什么不要使用全局变量,全局变量会破坏代码的模块化。模块化可以让我们在同一时间只考虑一部分,便于编写。同时也便于管理大型程序。尽量避免使用全局变量,很多时候为了偷懒使用全局变量,付出的代价就是代码可维护性差、可读性差、易出错等许多缺点。书中给出的解决办法主要有使用访问器子程序来代替全局变量,比如向堆栈中压入元素,据可以使用PushStack(newElement)这样的程序来实现,而不是使用stack.array[stack.top]=newElement。在选择使用全局变量之前,把全局变量设置为局部变量,只有在发现确实必须转变成全局变量,才转。命名的时候可以加一个前缀g_以此标明这个是全局变量,并且在全局变量的声明处指明具体功能。结构体可以减化对数据块的操作,同时明确一组数据之间的关系,增强代码的可读性,使用结构体还可以简化参数列表,减少维护。
在很多逻辑查询的地方可以尝试使用表驱动法,增强代码的可读性,提升效率。即直接去访问表或者查询表,以获得你想获得信息,而不是靠一大堆if else。
编写代码的时候要有意识的使用防御式编程,检查所有来源于外部的数据的值,检查子程序所有出入参数的值,同时确定如何处理错误的输入数据,比如可以换用最接近的合法值,或者返回错误信息、换用下一个正确的数据,用最妥当的方式在局部处理错误。这样处理除了可以提高代码的稳定性,还可以提高调试效率,迅速找到bug。