In de computerwetenschap is een onzuivere procedure een functie of subroutine die de omgeving wijzigt in plaats van een waarde terug te geven. Dit is in tegenstelling tot een pure procedure, die de omgeving niet wijzigt en in plaats daarvan een waarde retourneert.
Wanneer een procedure zijn omgeving wijzigt, kan dit het moeilijk maken om over het gedrag van het programma te redeneren. Beschouw bijvoorbeeld de volgende Python-functie:
```python
def add_to_list(lijst, waarde):
lijst.append(waarde)
```
Deze functie voegt een waarde toe aan een lijst. Het retourneert de lijst echter niet, dus het is niet duidelijk wat de waarde van de lijst is nadat de functie is aangeroepen. Dit kan het moeilijk maken om programma's te debuggen die deze functie gebruiken.
Overweeg daarentegen de volgende pure Python-functie:
```python
def add_to_list(lijst, waarde):
retourlijst + [waarde]
```
Deze functie retourneert een nieuwe lijst die de waarde bevat die aan de oorspronkelijke lijst is toegevoegd. Dit maakt duidelijk wat de waarde van de lijst is nadat de functie is aangeroepen, en maakt het gemakkelijker om fouten in programma's op te sporen die deze functie gebruiken.
Over het algemeen wordt het als een goede praktijk beschouwd om waar mogelijk zuivere procedures te gebruiken. Dit kan helpen om programma's gemakkelijker te begrijpen en te debuggen. |