Locality, module systems, coherence

Michael Feathers on locality in software design:

You have locality when you don’t have to look beyond your gaze to understand how you are affected or how you affect.

I find languages with a strong module system (Rust, Clojure, sometimes ES6-by-the-books) make each source file more coherent and easier to read than languages where methods or state have more sophisticated/powerful lookup schemes (Ruby, React-flavored ES6).

Plus, strong module systems seem to come with the side benefit of encouraging us to make up names for the functions and state we import, again improving coherence and readability.

A strong sense of locality, module systems, and coherence aren’t in a causal relationship, but they sure do taste great together.

Adam Keys @therealadam