《高质量C++编程指南》第6章~函数设计--【优秀的编程思想】
函数接口的两个要素是参数与返回值
C语言中,函数的参数和返回值的传递方式有:值传递和指针传递
C++语言中,多了引用传递
如果对引用和指针不理解,请先复习这篇博客:
《高质量C++编程指南》番外篇--引用与指针的比较?为什么要使用引用?
6.1 参数的规则
6.1.1 参数书写要完整
void SetValue(int width, int height); //良好的风格,要写出来传进来的是什么
float GetValue(void); //良好的风格,空了就加void
6.1.2 参数命名要恰当,顺序要合理
参数起名字要合理,比如void StringCopy(char *str1, char *str2);
这里并不清楚哪个是源,哪个是结果。命名为void StringCopy(char *strSource, char *strDestination)
还要注意的是:
程序员习惯将目的参数放前面,源参数放后面,所以上面的改为:void StringCopy(char *strDestination, char *strSource)
6.1.3 如果参数是指针且仅作为输入,应加const,以防止被以外修改
void StringCopy(char *strDestination, const char *strSource)
6.1.4 输入以值传递,宜改用“const &”方式传递,省去构造析构,提高效率
其他建议:
参数个数尽量控制在5个以内
尽量不要使用类型和数目不确定的参数
6.2 返回值的规则
6.2.1 不要省略返回值的类型
C++语言有很严格的类型安全检查,规定任何C++函数必须有类型,如果函数没有返回值,那么应声明void类型
6.2.2 函数名字与返回值类型在语义上不可冲突
如:getchar(void)
这个原型是int getchar(void); 很多人使用时char c; c = getchar();
这就导致了问题
6.2.3 不要讲正常值和错误标志混在一起返回:正常值用输出参数,错误标志用return返回
其他建议:
1.有时函数原本不需要返回值,但为了增加灵活性和支持链式表达,可以附加返回值,比如拷贝函数
void StringCopy(char *strDestination, const char *strSource)
2.如果函数的返回值是一个对象,有些场合用“引用传递”替换“值传递”可以提高效率,而有些场合只能用“值传递 ”不能用“引用传递”,否则会出错
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/90271082
- 点赞
- 收藏
- 关注作者
评论(0)