首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有返回的Switch语句--代码正确性

带有返回的Switch语句--代码正确性
EN

Stack Overflow用户
提问于 2010-06-18 04:36:12
回答 14查看 152.1K关注 0票数 99

假设我用C编写了这样的代码,结构大致如下:

switch (something)
{
    case 0:
      return "blah";
      break;

    case 1:
    case 4:
      return "foo";
      break;

    case 2:
    case 3:
      return "bar";
      break;

    default:
      return "foobar";
      break;
}

显然,break不是代码正确运行所必需的,但是如果我不把它们放在那里,这看起来是一种糟糕的做法。

你认为如何?可以去掉它们吗?或者你会为了增加“正确性”而保留它们吗?

EN

回答 14

Stack Overflow用户

发布于 2010-06-18 04:39:53

我会采取完全不同的策略。不要在方法/函数中间返回。相反,只需将返回值放在局部变量中并在末尾发送它即可。

就我个人而言,我发现以下内容更具可读性:

String result = "";

switch (something) {
case 0:
  result = "blah";
  break;
case 1:
  result = "foo";
  break;
}

return result;
票数 35
EN

Stack Overflow用户

发布于 2010-06-18 04:42:22

就我个人而言,我会删除返回并保留中断。我将使用switch语句为变量赋值。然后在switch语句后返回该变量。

虽然这是一个有争议的观点,但我一直认为好的设计和封装意味着一种进入和一种退出的方式。保证逻辑要容易得多,而且不会因为函数的圈复杂度而意外地遗漏清理代码。

有一个例外:如果在函数开始时--在获取任何资源之前--检测到错误的参数,那么可以提前返回。

票数 8
EN

Stack Overflow用户

发布于 2010-06-18 04:38:50

我会把它们去掉。在我的书中,像这样的死代码应该被认为是错误,因为它会让你反复思考,并问自己“我怎么才能执行那行代码呢?”

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3065438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档