相关疑难解决方法(0)

为什么函数只有一个退出点?

我一直听说单个退出点功能是一种糟糕的代码方式,因为你失去了可读性和效率.我从来没有听到任何人争辩对方.

我认为这与CS有关,但这个问题在cstheory stackexchange中被击落.

coding-style

89
推荐指数
5
解决办法
4万
查看次数

Pylint:在"返回"(no-else-return)警告后禁用不必要的"else"

我正在查看我的RC文件,我不能为我的生活,找到这些变量中的哪一个禁用该功能.

我搜索了"if","else"和"return",我什么也没看到.除非我错过了.

谢谢.

更多信息

pylint 1.7.2,
astroid 1.5.3
Python 2.7.10 (default, Jul 30 2016, 18:31:42)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)]
Run Code Online (Sandbox Code Playgroud)

我把什么放进了终端

pylint --rcfile=.pylintrc Test.py
Run Code Online (Sandbox Code Playgroud)

测试代码

""" Module Docstring """

def IS_POSITIVE(number):
    """ detects positive """
    if number > 0:
        return "+++"
    else:
        return "---"


print IS_POSITIVE(3)
Run Code Online (Sandbox Code Playgroud)

打印出来

************* Module Test
R: 27, 4: Unnecessary "else" after "return" (no-else-return)

------------------------------------------------------------------
Your code has been rated at 8.00/10 (previous run: 8.00/10, +0.00)
Run Code Online (Sandbox Code Playgroud)

python pylint pylintrc

10
推荐指数
1
解决办法
4906
查看次数

如果没有必要,最好在Python中使用"else"吗?

我实际上使用Python和Flask作为我的devblog.我知道根据语言的不同,建议在else非强制性时使用显式,但我不知道它在Python中是如何工作的.

例如,我有一个函数,if如果语句为真,则返回一些东西.所以,else没有必要,因为有或没有它,执行继续正常.

def foo(bar):
    if not isinstance(foo, list):
        return "an error"
    else: # not necessary 
        return "something"
Run Code Online (Sandbox Code Playgroud)

所以,我应该像这样使用它,或者像:

def foo(bar):
    if not isinstance(foo, list):
        return "an error"

    return "something"
Run Code Online (Sandbox Code Playgroud)

python coding-style

8
推荐指数
3
解决办法
2544
查看次数

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
查看次数

计算函数返回值的最佳实践

我经常在C中构建函数来检查一些参数并返回错误代码.

当我发现错误时停止值检查的最佳方法是什么?

第一个例子:

ErrorCode_e myCheckFunction( some params )
{
  ErrorCode_e error = CHECK_FAILED;

  if( foo == bar )
  {
     if( foo_1 == bar_1 )
     {
        if( foo_2 == bar_2 )
        {
           error = CHECK_SUCCESS;
        }
     }
  }

  return error;
}
Run Code Online (Sandbox Code Playgroud)

第二个例子:

ErrorCode_e myCheckFunction( some params )
{
  if( foo != bar )
  {
     return CHECK_FAILED;
  }

  if( foo_1 != bar_1 )
  {
     return CHECK_FAILED;
  }

  if( foo_2 != bar_2 )
  {
     return CHECK_SUCCESS;
  }
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢第一种方法,因为我读到MISRA规则避免多次返回语句.

哪种方法最好?

c return misra

8
推荐指数
1
解决办法
889
查看次数

else vs返回功能以过早停止处理

[编辑]更改return 0return。Beaa Python n00b的副作用。:)

我正在定义一个函数,正在执行约20行处理。在处理之前,我需要检查是否满足特定条件。如果是这样,那么我应该绕过所有处理。我已经用这种方式定义了函数。

def test_funciton(self,inputs):
    if inputs == 0:
        <Display Message box>
        return
    <20 line logic here>
Run Code Online (Sandbox Code Playgroud)

请注意,20行逻辑不返回任何值,并且我不使用第一个“ if”中返回的0。

我想知道这是否比使用以下类型的代码更好(就性能,可读性或任何其他方面而言),因为上述方法对我来说很好,因为它减少了一个缩进:

def test_function(self,inputs):
    if inputs == 0:
        <Display Message box>
    else:
        <20 line logic here>
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
1
解决办法
5280
查看次数

"else:return True"和"return True"之间有什么区别?

当我学习Python时,我遇到了一些不同的风格.我想知道使用"else"与使用"if"语句之外的代码之间的区别是什么.为了进一步解释我的问题,下面是两段代码.

x = 5
if x == 5:
    return True
else:
    return False
Run Code Online (Sandbox Code Playgroud)

据我所知,如果x!= 5,则返回False,但下面的代码如何与上面的代码形成对比?它是完全相同的,还是有细微的差别?使用一个比另一个好吗?

x = 5
if x == 5:
    return True
return False
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
2
解决办法
192
查看次数

Ruby的if/else方法

编辑:我收到了关于重构三元操作的答案.虽然我知道下面所有语言都可以实现这一点,但这并不一定是关于风格的原始问题.我编辑了这些片段以反映这一点.


我很好奇,如果它是惯用的或者总是else在使用if/ else在方法中时使用.

例如,在JS中,这在风格上是可接受的(有时是首选的)

function jsFunc(x) {
  if (x == 0) {
    // do a bunch of stuff here
    return answer;
  }

  // do something else
  return differentAnswer;
}
Run Code Online (Sandbox Code Playgroud)

我也在Python中看到了类似的风格:

def py_func(x):
    if x == 0:
        # do a bunch of stuff here
        return answer
    # do something here
    return differentAnswer
Run Code Online (Sandbox Code Playgroud)

但是从我见过的Ruby,它总是:

def ruby_method(x)
  if x == 0
    # do a bunch of stuff here
    answer
  else
    # do something else
    differentAnswer
  end …
Run Code Online (Sandbox Code Playgroud)

ruby if-statement coding-style

0
推荐指数
1
解决办法
158
查看次数

标签 统计

python ×4

coding-style ×3

c ×2

misra ×2

c++ ×1

if-statement ×1

pylint ×1

pylintrc ×1

return ×1

ruby ×1