我一直听说单个退出点功能是一种糟糕的代码方式,因为你失去了可读性和效率.我从来没有听到任何人争辩对方.
我认为这与CS有关,但这个问题在cstheory stackexchange中被击落.
我正在查看我的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和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) 我正在研究嵌入式程序,在某些情况下如果没有条件,我想尽快从函数返回.如果我有以下代码,我正在进行嵌入式编程:
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中构建函数来检查一些参数并返回错误代码.
当我发现错误时停止值检查的最佳方法是什么?
第一个例子:
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规则避免多次返回语句.
哪种方法最好?
[编辑]更改return 0为return。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时,我遇到了一些不同的风格.我想知道使用"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) 编辑:我收到了关于重构三元操作的答案.虽然我知道下面所有语言都可以实现这一点,但这并不一定是关于风格的原始问题.我编辑了这些片段以反映这一点.
我很好奇,如果它是惯用的或者总是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) python ×4
coding-style ×3
c ×2
misra ×2
c++ ×1
if-statement ×1
pylint ×1
pylintrc ×1
return ×1
ruby ×1