第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

 

posted @ 2019-10-27 11:37  一帆小白  阅读(154)  评论(0编辑  收藏  举报