I datalogi er en uren procedure en funktion eller subrutine, der ændrer sit miljø i stedet for at returnere en værdi. Dette er i modsætning til en ren procedure, som ikke ændrer sit miljø og i stedet returnerer en værdi.
Når en procedure ændrer sit miljø, kan det gøre det vanskeligt at ræsonnere om programmets opførsel. Overvej for eksempel følgende Python-funktion:
``` python
def add_to_list(liste, værdi):
list.append(værdi)
```
Denne funktion tilføjer en værdi til en liste. Det returnerer dog ikke listen, så det er ikke klart, hvad værdien af listen er, efter at funktionen er kaldt. Dette kan gøre det vanskeligt at fejlfinde programmer, der bruger denne funktion.
I modsætning hertil skal du overveje følgende rene Python-funktion:
``` python
def add_to_list(liste, værdi):
returliste + [værdi]
```
Denne funktion returnerer en ny liste, der indeholder værdien tilføjet til den oprindelige liste. Dette gør det klart, hvad værdien af listen er, efter at funktionen er kaldt, og det gør det lettere at fejlsøge programmer, der bruger denne funktion.
Generelt anses det for god praksis at bruge rene procedurer, når det er muligt. Dette kan hjælpe med at gøre programmer nemmere at forstå og fejlfinde.