Jak bezpiecznie refaktoryzować w języku z dynamicznym zakresem?

Dla tych z was, którzy mają szczęście nie pracować w języku z dynamicznym zakresem, pozwólcie, że trochę odświeżę, jak to działa. Wyobraź sobie pseudo-język o nazwie „RUBELLA”, który zachowuje się tak: function foo() { print(x); // not defined locally => uses whatever value `x` has in the...