I informatikk er en uren prosedyre en funksjon eller subrutine som endrer miljøet i stedet for å returnere en verdi. Dette er i motsetning til en ren prosedyre, som ikke endrer miljøet og i stedet returnerer en verdi.
Når en prosedyre endrer omgivelsene, kan det gjøre det vanskelig å resonnere om oppførselen til programmet. Tenk for eksempel på følgende Python-funksjon:
``` python
def add_to_list(liste, verdi):
list.append(verdi)
```
Denne funksjonen legger til en verdi til en liste. Den returnerer imidlertid ikke listen, så det er ikke klart hva verdien av listen er etter at funksjonen er kalt. Dette kan gjøre det vanskelig å feilsøke programmer som bruker denne funksjonen.
I motsetning, vurder følgende rene Python-funksjon:
``` python
def add_to_list(liste, verdi):
returliste + [verdi]
```
Denne funksjonen returnerer en ny liste som inneholder verdien lagt til den opprinnelige listen. Dette gjør det klart hva verdien av listen er etter at funksjonen er kalt, og det gjør det lettere å feilsøke programmer som bruker denne funksjonen.
Generelt anses det som god praksis å bruke rene prosedyrer når det er mulig. Dette kan bidra til å gjøre programmer enklere å forstå og feilsøke.