mccabe
mccabe copied to clipboard
Complexity in list comprehensions
Having asdf.py
:
elements = [0, 1, 2, 3, 4]
ignore = [1, 2]
def loop():
for x in elements:
if x in ignore:
continue
print(x)
def comprehension():
filtered = [x for x in elements if x not in ignore]
for x in filtered:
print(x)
loop()
print('----')
comprehension()
The McCabe complexity in loop()
seems to be higher than in comprehension()
:
$ python -m mccabe asdf.py
5:0: 'loop' 3
12:0: 'comprehension' 2
Is that really expected? Should not for
s and if
s in list comprehensions count towards total complexity?
To be hones I seen a lot of abuse related to list comprehensions, with nesting and other stuff that reduced the readability and maintainability of the code considerably.
Shorter is no always better. I would be very happy if mccabe would not promote people to trick complexity-score by using list comprehensions.
I would be very happy if mccabe would not promote people to trick complexity-score by using list comprehensions.
This assumes bad intent on the part of the author and maintainers which is unwelcome.