Pocoo风格指南建议使用break
、continue
和return
语句来避免深度嵌套的代码。你会怎么做?
一个简单的例子是:
for item in seq:
if someCondition:
# Here is our code block
if blah:
more.stuff()
你可以做这个
for item in seq:
if not someCondition:
continue
# Now our code block is here
if blah:
more.stuff()
请注意,后者保存一个缩进级别。显然,您不能总是这样做,但在某些情况下,它可以提高可读性,在开始时处理"ifX然后立即停止"的条件,而不必在if
块中封装大量代码。
例如,不写:
if param1Valid:
if param2Valid:
....
你可以使用保护条款:
if not param1Valid:
return
if not param2Valid:
return
....
许多文章赞美保护条款的优点:
- http://blog.mafr.de/2009/06/12/a-case-for-guard-clauses/
- http://www.codinghorror.com/blog/2006/01/flattening-arrow-code.html
- http://sourcemaking.com/implementation-patterns/guard-clause
您可以在带有continue关键字的循环中使用完全相同的方法。