`
happmaoo
  • 浏览: 4348663 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于函数返回值的设计的一些思考

阅读更多


作者:朱金灿
来源:http://blog.csdn.net/clever101/


最近对函数返回值的设计有了一些新的思考。前一阵子头检查我写的代码。我的代码大致如下(凭记忆):




头建议我将CDrawObj类的GetExtent函数改为如下:


我说:"这样是为了方便实现链式表达式吗?"我的意思是:照头的改法,外部可以这样调用:stExtent TmpExtent = Obj1. GetExtent() + Obj1. GetExtent();头说:"不完全是,你想照你的做法,用户必须先定义一个stExtent变量,再把它传进函数。"我说:"这源于我的习惯认识,我认为renturn 返回的值用于判断操作是否成功"。不过这次头确实说的有道理,因为这个操作的返回值是void,那么直接返回操作结果值更为合理。


今天见到这样一个类的函数这样写:



我觉得这样设计并不合理,如果让我设计的话,我会这样设计这个函数:
BOOL SearchProperty(const std::string strProName,stProperty &prop),
用BOOL变量返回值来判断是否存在这样的属性,用变量prop来保存查找结果。


为此我总结了一下设计函数的一些心得:首先判断是否需要操作是否成功、值是否存在,若不需要,考虑直接返回操作结果(即由renturn语句返回而不是通过输出参数返回),毕竟这样外部调用比较方便,若需要,则应设计为通过输出参数返回操作结果值。
















分享到:
评论

相关推荐

    c语言课程设计报告通讯录管理系统.doc

    此处为通过保存函数保存后的txt文本中的学生信息 六:心得 课程设计是一个不断学习、思考、编写、修改的过程。它对我们的能力提出了挑战。 我不仅意识到c语言基础的重要性,更意识到了自学能力的重要性,同学学习...

    像计算机科学家一样思考Python(第2版).pdf

    贯穿全书的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介。 全书共21章,详细介绍Python语言编程的方方面面。本书从基本的编程概念开始讲起,包括语言的语法和语义,...

    c-c++及数据结构基础视频教程完整版,最适合自学的c++基础

    第二部分C++基础目录 01_C++基础课程的安排和需要持之以恒的学习态度 02_简单的C++程序helloworld 03_用面向过程和面向对象...21_函数返回值是引用(当左值右值)_传智扫地僧源码及文档 01_上一次课程复习 02_指针的引用_

    网页与Web程序设计 课件 ppt 机械工业出版社 part1

    7.6.3 函数的参数传递和返回值 134 7.6.4 函数的变量作用范围 135 7.7 JavaScript对象和数组 135 7.7.1 对象 135 7.7.2 数组 144 7.7.3 文档对象模型 147 本章小结 151 思考题 152 第8章 表单 153 8.1 插入...

    java 编程入门思考

    引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...13. 封面设计 ...1.12 分析和设计 ...附录E 关于垃圾收集的一些话 附录F 推荐读物

    开学了,有路网团购太便宜啦! C++编程惯用法(高级程序员常用方法和技巧)/深入C++系列(C++ Strategies and Tactics)

    一开始书中会给出一个关于它们应该用在设计的什么地方的讨论,然后就是一些详细的示例代码,用来向我们演示如何在实践中使用这些概念。对于 mulu 代译者序 序 第0章 简介 0.1 关于示例代码 0.2 本书的组织 0.3 问题 ...

    传智播客扫地僧视频讲义源码

    15_友元函数实现左移右移操作符重载(函数返回值当左值需返回引用)_传智扫地僧 16_友元函数实现操作符重载知识总结 17_重载等号操作符_传智扫地僧 18_数组类小案例_操作符重载需求 19_数组类小案例_重载[]_传智扫地...

    用C编写班级成绩管理系统

    通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。...

    C语言在本科计算机相关专业的课程定位及学习体会-.doc

    可以把学习的重点放在函数的设 计框架、参数设计、返回值设计等关键问题上。 八、学习过程中引入软件工程的基本思想 为使自己有良好的编程思维,培养自己在程序设计中从软件工程角度去系统分析^p 问题的良好习惯。 ...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    3.1.1 返回值的预定义函数 63 3.1.2 预定义的void函数 66 3.1.3 随机数生成器 68 3.2 程序员定义的函数 71 3.2.1 定义返回值的函数 71 3.2.2 函数声明的替代形式 73 3.2.3 调用函数的函数 73 3.2.4 返回布尔...

    linux系统编程之线程.zip

    1. 如果thread线程通过return返回,retval所指向的单元里存放的是thread线程函数的返回值。 2. 如果thread线程被别的线程调用pthread_cancel异常终止掉,retval所指向的单元里存放的是常数PTHREAD_CANCELED。 3. ...

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    10.1.7 assert的引申:检查函数返回值 295 10.1.8 释放的指针需要置空吗 297 10.2 让程序更利于调试 298 10.2.1 录像 299 10.2.2 实现一个log类 300 10.2.3 跟踪代码运行的流程 302 10.2.4 为内存分配加上一个壳 302...

    我的编程感悟(中文PDF)(共37M二分卷)分卷一

    10.1.7 assert的引申:检查函数返回值 295 10.1.8 释放的指针需要置空吗 297 10.2 让程序更利于调试 298 10.2.1 录像 299 10.2.2 实现一个log类 300 10.2.3 跟踪代码运行的流程 302 10.2.4 为内存分配加上一个壳 302...

    华为编程开发规范与案例

    接口类问题(B类)-指设计、编码中出现的函数和环境、其他函数、全局/局部变量或数据变量之间的数据/控制传输不匹配的问题,在系统中起重要作用,将导致模块间配合失效等严重问题; 维护类问题(C类)-指设计、...

    网上购物系统

    <p>//返回值:1为是数字,0为不是数字 <p>function fucCheckNUM(NUM) <p>{ <p>var i,j,strTemp; <p>strTemp="0123456789"; <p>if ( NUM.length== 0) <p>     return 0 <p>for (i=0;i<NUM....

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    4.1 以面向集合的思维方式来思考 95 4.1.1 从面向过程转变为基于集合的思维方式 96 4.1.2 面向过程vs.基于集合的思维方式:一个例子 100 4.2 集合运算 102 4.2.1 UNION和UNION ALL 103 4.2.2 MINUS 106 4.2.3...

Global site tag (gtag.js) - Google Analytics