Skip to content

Commit

Permalink
[ISSUE 142] new python rule : AvoidMultipleIfElseStatement
Browse files Browse the repository at this point in the history
  • Loading branch information
dedece35 committed Aug 5, 2023
1 parent 90667c4 commit f6aae7d
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ if ($nb == 0) {
} else {
$nb = -1;
}
return $nb;
```

## Compliant Code Example
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
If we are using too many conditional IF, ELSEIF or ELSE statements it will impact performance.
We can think of using a switch statement instead of multiple if-else if possible, or refactor code
to reduce number of IF, ELSEIF and ELSE statements. Sometimes called "complexity cyclomatic".
MATCH-CASE statement has a performance advantage over if – else.

## Functional rules
- one variable must be used maximum twice in IF / ELSEIF / ELSE statements at the same level - WARNINGs :
- IF and ELSEIF statements use explicitly variable names !
- ELSE statements use implicity variable names !
- one variable must be used maximum twice in IF / ELSEIF / ELSE statements at differents hierarchical levels
- we can assume that if one variable is used three times or more, we should :
- use a MATCHS-CASE statement instead
- or refactor the code if possible

## Non-compliant Code Example

NON compliant, because `nb` is used 4 times :
- 2 explicit times in IF statements
- 2 implicit times in ELSE statements

```python
index = 1
nb = 2
...
if nb == 0:
nb = index
elif nb == 1:
nb = index * 2
elif nb == 2:
nb = index * 3
else:
nb = -1
return nb
```

## Compliant Code Example

MATCH-CASE statement solution + refactor solution

```python
index = 1
nb = 2
...
match nb:
case 0:
nb = index * (nb + 1)
case 1:
nb = index * (nb + 1)
case 2:
nb = index * (nb + 1)
case _:
nb = -1
return nb
```

0 comments on commit f6aae7d

Please sign in to comment.