游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3191|回复: 7

[疑问]关于return的一个习惯?

[复制链接]

17

主题

282

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
发表于 2008-8-2 00:14:00 | 显示全部楼层 |阅读模式
在《essential c++》上看到一个例子
大概是这样
bool Foo()
{
  bool status = true;

  if(something)
  {
     //codes...
     return status;
  }

  status = false;
  return status;
}

为什么要专门用一个变量来输出bool结果?
如果是我自己写,一般就直接return true or false了

这么写的好处究竟在哪里呢? [em5]

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2008-8-3 11:50:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

12

主题

95

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2008-8-7 18:32:00 | 显示全部楼层

Re:[疑问]关于return的一个习惯?

这段代码并不能作为 return的例子来说明,且这样做可能更好一点:
bool Foo()
{
  bool status = false;

  if(something)
  {
     //codes...
     status = true;
  }
  else
  {
    //....
  }

  return status;
}

用一个bool值,就可以避免过多的return存在,出口单一化。

29

主题

475

帖子

481

积分

中级会员

Rank: 3Rank: 3

积分
481
发表于 2008-8-8 22:46:00 | 显示全部楼层

Re:[疑问]关于return的一个习惯?

恩,最后全部汇总在一个return上,函数出口就只有一个,如果要加什么处理也会方便很多

17

主题

282

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
 楼主| 发表于 2008-8-9 23:45:00 | 显示全部楼层

Re:[疑问]关于return的一个习惯?

谢谢ls各位
我就是奇怪为什么原来的代码是这样,还非要用bool来return

不过至少明白了可以让函数出口单一化
再次感谢

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2008-8-11 01:39:00 | 显示全部楼层

Re:[疑问]关于return的一个习惯?

比如函数最开始时申请了一段内存,返回前应该释放掉才对。如果不统一出口,那么每一次书写返回语句时,都要冒一次漏写释放代码的风险。

当然,统一出口也可能漏掉,根本保障是制定代码审查手册和使用检查工具。

17

主题

282

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
 楼主| 发表于 2008-8-11 22:20:00 | 显示全部楼层

Re: Re:[疑问]关于return的一个习惯?

funcman: Re:[疑问]关于return的一个习惯?

比如函数最开始时申请了一段内存,返回前应该释放掉才对。如果不统一出口,那么每一次书写返回语句时,都要...


谢谢~

受教了

0

主题

19

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2009-8-9 14:52:00 | 显示全部楼层

Re:[疑问]关于return的一个习惯?

Re:[疑问]关于return的一个习惯?

比如函数最开始时申请了一段内存,返回前应该释放掉才对。如果不统一出口,那么每一次书写返回语句时,都要冒一次漏写释放代码的风险。

当然,统一出口也可能漏掉,根本保障是制定代码审查手册和使用检查工具。

有时候确定会有这样的问题!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-21 16:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表