И здесь можно идти разными путями, вот
@graninas любит свой подход, в котором (упрощенно) ты в одном месте можешь описать все внешние эффекты, которые может делать твой код, и в другом использовать. В этом случае ты можешь точно знать, что может делать, а что не может делать функция. И контролировать это