第6章:函数设计
Posted lyf98
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第6章:函数设计相关的知识,希望对你有一定的参考价值。
一、参数的规则
1、参数的书写要完整(声明可以不写参数名字)
2、参数命名要恰当,顺序要合理(最好把目的参数放在前面,源参数放在后面)
3、如果参数是指针,并且仅作输入用,应在前面加上const限制,保护空间里的内容不会被修改
4、如果参数是值传递,最好改成const&方式(不会创建一个新的变量而且还保护了其值不会被修改)
5、参数个数尽量不要超过5个
6、尽量不要使用类型和数目不确定的参数
(print函数的参数个数是不确定)
二、返回值的规则
1、不要省略返回值的类型,若没有返回值,则声明为void类型
(C语言中没有返回值则默认为int,C++中会进行类型安全检查,产生错误)
2、函数名与返回值类型在语义上不可以冲突
(getchar函数是个例外,其返回值是int型)
3、正常值用输出参数获得,错误标志用return语句返回
三、函数内部实现的规则
1、在函数的入口处对参数进行有效性检查(断言assert)
2、在函数的出口处对return语句的正确性和效率进行检查。
a、return语句不得返回指向栈内存(在函数体内部创建的变量)的指针或者引用
b、要搞清楚返回值究竟是值、指针还是引用
c、如果函数返回值是一个对象,要考虑return语句的效率
(如果是类对象,最好是创建一个临时对象并返回它,如果是内部类型直接返回即可)
四、其它建议
1、函数的功能要单一
2、函数体的规模要小
3、尽量避免函数带有“记忆”功能
4、不仅要检查输入参数的有效性,还要检查通过其他途径进入函数体内的变量的有效性
5、用于出错处理的返回值一定要清楚
五、断言assert
断言是仅在Debug版本起作用的宏,它用于检查“不应该发生的情况”,如果有错误情况则会立刻中止程序
1、使用断言捕捉不应该发生的非法情况
2、在函数的入口处,使用断言检查参数的有效性(合法性)
六、引用与指针的比较
(这一部分可以看我另一篇博客:https://www.cnblogs.com/lyf98/p/11741953.html)
以上是关于第6章:函数设计的主要内容,如果未能解决你的问题,请参考以下文章