一个函数只有一个出口

出口就是函数退出的地方,一个return也算是一个出口。如果一个函数有多个出口可能扰乱读者的思考

int max_num(int a, int b)
{
     return a < b ? b : a;       
}

这是一个出口,再看个两个出口的

int max_num(int a, int b)
{
    if (a < b)
    {
        return b;
    }
    else
    {
        return b;
    }
}

看起来似乎还好,没影响到阅读。再看个复杂点的

bool update_user_amount (DBSession& db_session, int modify_amount)
{
  if (db_session.is_valid())
  {
     return false;
  }

if (!db_sesson.start_transaction()) { return false; } if (db_session.query("SELECT amount FROM user WHERE ... FOR UPDATE")) { DBRow db_row = db_session.fetch_row(); if (!db_row.is_null()) { db_session.rollback(); return false; } int balance_amount = 0; if (!db_row.get_value("amount", balance_amount)) { db_session.rollback(); return false; } balance_amount += modify_amount; if (balance_amount < 0) { db_session.rollback(); return false; } if (!db_session("UPDATE amount....")) { db_session.rollback(); return false; } db_session.commit(); return true;
  }
  else
  {
     db_session.rollback();
     return false;
  } }

 这段代码是从实际项目里摘出来简化后的,虽然是简化的,但是看起来依然不太友好,如果后续要修改的话,非常有可能忽略事物的处理,比如直接return了但是没有提交或回滚事物。当一个函数有数百行长时,再加上if else嵌套过深,如果随意return将给阅读带来极大的难度

转载于:https://www.cnblogs.com/tianrks/p/10590460.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值