Code with only local consequences of change is easier to develop and maintain.
-
Keep consequences local by strong encapsulation and avoiding sharing
and remote delegation.
-
Try to make most of your code satisfy this rule, but break it intentionally to do powerful things in small parts of your design.