相关疑难解决方法(0)

在所有函数中都有一个return语句是一种很好的编程习惯吗?

我有一个基本的编程问题.我想知道每个非void函数是否应该在PHP脚本中有一个"return"语句.

采用以下两个示例函数.哪一个是更好的编程方式?他们都做同样的事情(根据我的理解),但这是"更好的做法",为什么?

function displayApple1($str){
    if($str == 'apple')
        echo $str;
}

function displayApple2($str){
    if($str == 'apple')
        echo $str;
    else
        return;
}
Run Code Online (Sandbox Code Playgroud)

php function

9
推荐指数
3
解决办法
2074
查看次数

编程首选项 - 使用具有多个return语句的else ifs?

代码:

public String getTemperatureMessage(double temp)
{
    if(temp < 32)
        return "Freezing";
    else if(temp < 60)
        return "Brr";
    else if(temp < 80)
        return "Comfortable";
    else
        return "Too hot";
}
Run Code Online (Sandbox Code Playgroud)

关于上面的代码片段,else ifs在技术上是多余的,并且根本不会改变行为.但是,我倾向于把它们放在那里强调条件是排他性的.你的想法是什么?不必要或更清楚?

java language-agnostic preferences

9
推荐指数
4
解决办法
7467
查看次数

多个返回语句,可读性

可能重复:
函数是否只有一个return语句?

我的老师对我写的一些java代码(我仍然得到一个A,这只是我在java课程中获得的第一个非100%的成绩)取得了分数.我不打算与老师争论这一点,但我想从实际的程序员那里得到一些建议.这是令人讨厌的代码:

private char byte2suit(byte val) {
    switch(val) {
        case 0: return 's';
        case 1: return 'c';
        case 2: return 'h';
        case 3: return 'd';
        }
    //fallback value
    return 'h';
    }
Run Code Online (Sandbox Code Playgroud)

在我看来,更清楚的是初始化返回值,在案例中分配(并添加中断;每行)然后返回值.当然,在其他人看到的代码中,我的意见并不强大,所以我想知道你们对java(或C/C++)中多个return语句的看法,如果你确实使用了多个return语句你比"if(this)return a; else return b;"更多地使用它吗?声明?如果你不使用多个return语句,你能给出一个非常令人信服的理由(如果上面的代码是可读的并且是我的多重返回编码实践的最大范围,则不可读的代码不是原因)

java readability

9
推荐指数
1
解决办法
2549
查看次数

Python:函数始终返回None

我有一些基本上看起来像这样的Python代码:

my_start_list = ...

def process ( my_list ):
    #do some stuff

    if len(my_list) > 1:
        process(my_list)
    else:
        print(my_list)
        return my_list

print(process(my_start_list))
Run Code Online (Sandbox Code Playgroud)

奇怪的是:print(my_list)打印出正确的内容.但是,打印函数返回值的第二个print语句始终打印"None".即使我用return("abc")替换正常的return语句,它仍然是None.

由于变量的内容在return语句之前似乎是正确的一行,我不知道从哪里开始调试.是否有可能导致此问题的常见问题?

python return

9
推荐指数
2
解决办法
1万
查看次数

替代'continue'关键字

我正在浏览关于continue关键字的问题,以便更好地理解它,我在这个答案中偶然发现了这一行

这些可以是维护时间炸弹,因为"继续"/"中断"与循环之间没有直接联系,它继续/打破除上下文之外;

我有这个for循环:

for(Object obj : myArrayList){
  if(myArrayList.contains(someParticularData)){
       continue;
    }
   //do something
}
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是 - continue以我上面所做的方式使用它还是有问题吗?如果是,我可以采用的替代方法是什么?任何形式的指导都会有所帮助.谢谢.

更新:我在这种特定情况下的目标是迭代a Collection(ArrayList在这种情况下),并检查是否包含某些特定数据,如果为真,则跳过该迭代.我被指出这myArrayList.contains(someParticularData)是一次性操作,并且最好在循环外执行该检查,这正是我所寻找的.另外,我了解到如果我可以continue根据某些条件使用if(someConditon),我可以通过使用来避免它if(!someCondition).

java loops continue

9
推荐指数
2
解决办法
3867
查看次数

C/C++条件返回语句

我正在研究嵌入式程序,在某些情况下如果没有条件,我想尽快从函数返回.如果我有以下代码,我正在进行嵌入式编程:

foo() {
   if (a < b) {
       return 0;  // bail, since condition is met
   } else {
       // lots of calculations in this block
   }
   return 1;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,有多个return语句是不是很糟糕?这是不好的做法吗?有更好的方法吗?MISRA是否对此有所说明?

注意:这个问题特别针对嵌入式系统,与MISRA有关,而不仅仅是C/C++

谢谢...

c c++ misra

8
推荐指数
2
解决办法
8328
查看次数

这两种代码风格的区别有名字吗?

当我看到别人的代码时,我主要看到两种类型的方法样式。

一个看起来像这样,有许多嵌套的 if:

void doSomething(Thing thing) {
  if (thing.hasOwner()) {
    Entity owner = thing.getOwner();
    if (owner instanceof Human) {
      Human humanOwner = (Human) owner;
      if (humanOwner.getAge() > 20) {
        //...
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

而另一种风格,看起来像这样:

void doSomething(Thing thing) {
  if (!thing.hasOwner()) {
    return;
  }
  Entity owner = thing.getOwner();
  if (!(owner instanceof Human)) {
    return;
  }
  Human humanOwner = (Human) owner;
  if (humanOwner.getAge() <= 20) {
    return;
  }
  //...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这两种代码样式有名称吗?如果,他们叫什么。

java

7
推荐指数
1
解决办法
134
查看次数

更好的Java方法语法?回来早还是晚?

重复: 函数是否只有一个return语句?

通常情况下,您可能会有一个检查众多条件并返回状态的方法(现在就说布尔值).最好定义一个标志,在方法中设置它,并在结尾返回它:

boolean validate(DomainObject o) {
  boolean valid = false;
  if (o.property == x) {
     valid = true;
  } else if (o.property2 == y) {
     valid = true;
  } ...
  return valid; 
}
Run Code Online (Sandbox Code Playgroud)

或者,一旦你知道方法的结果,简单地返回会更好/更正确吗?

boolean validate(DomainObject o) {

  if (o.property == x) {
     return true;
  } else if (o.property2 == y) {
     return true;
  } ...
  return false; 
}
Run Code Online (Sandbox Code Playgroud)

现在显然可能有try/catch块和所有其他类型的条件,但我认为这个概念很清楚.意见?

java coding-style return-path

6
推荐指数
3
解决办法
1万
查看次数

如果阻止,则返回负面条件

如果我有一个函数应该在某些条件下执行一个动作,而是返回null,这更干净:

def func():
    if not condition:
        return None

    [...]
    return asd
Run Code Online (Sandbox Code Playgroud)

要么

def func():
    if condition:
        [...]
        value = asd
    else:
        value = None

    return value
Run Code Online (Sandbox Code Playgroud)

我已经阅读了每个函数应该有一个返回点的范例.另一方面,python的zen表示flat比嵌套好,后来的版本在整个动作代码上面添加了一个嵌套级别(标记为[...]).

还请记住,条件可能更复杂,例如,添加多个嵌套级别.

python oop procedural-programming coding-style

6
推荐指数
0
解决办法
374
查看次数

这两个功能中哪一个更"pythonic"?

我只是想知道python中哪种方式更可取.想象一下两个功能:

1功能:

def foo(key):
    if bar.has_key(key):
        return bar.get(key)
    # do something with bar
    # this will be executed if bar_key(key) is False
    ...
    return something
Run Code Online (Sandbox Code Playgroud)

2功能:

def foo(key):
    if bar.has_key(key):
        return bar.get(key)
    else:
        # do something with bar
        # this will be executed if bar_key(key) is False
        ...
        return something
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,唯一的区别就是else陈述.所以问题是它会以某种方式影响性能.或者是否有任何理由包含else此类功能?

python

6
推荐指数
1
解决办法
122
查看次数