The Ruby on Rails and ClojureScript experts

Feb 5, 2012

Reification sounds horribly abstract, however it is an incredibly important concept, related to writing better software:

By means of reification, something that was previously implicit, unexpressed, and possibly inexpressible is explicitly formulated and made available to conceptual (logical or computational) manipulation. Informally, reification is often referred to as “making something a first-class citizen” within the scope of a particular system.

Link: Reification (computer science) – Wikipedia, the free encyclopedia

As soon as you reify a concept in your code (typically by defining a method or data structure, or class), the concept has a name and a single location in your code. This gives you the following benefits:

  • you can refer to the concept using its name as a symbol. This makes for effective communications with colleagues.
  • you can test its behavior because it now has a clearly defined interface.
  • your code becomes adaptable since it’s easy to find all places in your code that refer to the concept via simple search, and the implementation of the concept is located in exactly one place.
  • it encourages the use of the least evil of all couplings in sofware: a concept known and reified as “Connascence of Name“.