第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章:函数设计的主要内容,如果未能解决你的问题,请参考以下文章

第6章:函数设计

第6章 面向对象的程序设计 6.2 原型模式

再看《JavaScript高级程序设计》第6-7章

第6章 面向对象的程序设计 6.1 javascript对象

JavaScript设计模式与开发实践

Java面向对象程序设计第14章3-8和第15章6