本文是自己读书的时候一些关于该书的重点及感悟
目录
1、函数的好处
(1)降低复杂性
(2)避免代码重复
(3)限制改动带来的影响
(4)隐含顺序
(5)改进性能
(6)进行集中控制
(7)隐含数据结构
(8)隐含指针操作
(9)隐藏全局变量
2、编码风格
(1)每一个函数都必须有注释,即使函数短到可能只有几行。
(2)每个函数定义结束之后以及每个文件结束之后都要加一个或若干个空行。
(3)在一个函数体内,变量定义与函数语句之间要加空行。
(4)逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。
(5)复杂的函数中,在分支语句,循环语句结束之后需要适当的注释,方便区分各分支或循环体
(6)修改别人代码的时候不要轻易删除别人的代码,应该用适当的注释方式,
(7)用缩行显示程序结构,使排版整齐,缩进量统一使用4个字符(不使用TAB缩进)。
(8)在函数体的开始、结构/联合的定义、枚举的定义以及循环、判断等语句中
的代码都要采用缩行。
(9)同层次的代码在同层次的缩进层上。
(10)代码行最大长度宜控制在80 个字符以内,较长的语句、表达式等要分成多行书写。
(11)长表达式要在低优先级操作符处划分新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。
(12)如果函数中的参数较长,则要进行适当的划分。
(13)用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
(14)如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。
(15)不要编写太复杂的复合表达式。
(16)不要有多用途的复合表达式。
(17)尽量避免含有否定运算的条件表达式。
(18)参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数,则用void 填充。
3、函数设计的一般原则和技巧
(1)原则上尽量少使用全局变量
(2)参数命名要恰当,顺序要合理。
(3)如果参数是指针,且仅作输入参数用,则应在类型前加const,以防止该指针在函数体内被意外修改。
(4)不要省略返回值的类型
(5)在函数体的“入口处”,对参数的有效性进行检查。
(6)return 语句不可返回指向“栈内存”的“指针”
(7)函数的功能要单一,不要设计多用途的函数。
(8)函数体的规模要小,尽量控制在80 行代码之内。
(9)相同的输入应当产生相同的输出。
(10)避免函数有太多的参数,参数个数尽量控制在4个或4个以内。
(11)尽量不要使用类型和数目不确定的参数。
(12)有时候函数不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。
(13)不仅要检查输入参数的有效性,还要检查通过其它途径进入函数体内的变量的有效性,例如全局变量、文件句柄等。
(14)函数名与返回值类型在语义上不可冲突。
4、递归
(1)平时写代码,不到万不得已,尽量不要用递归。