Domain Neutral

The ignorance of a thing about knowledge of a certain domain, thus allowing the thing to be neutral about and uncoupled to that domain.


For example consider a button on a window. You can click it and something happens. Now suppose that button will only run on Windows platforms, and not Unix. Obviously the button knows something about Windows and is therefore not "platform domain neutral".

Now suppose we introduce the concept of a Virtual Machine. We have one for Windows and one for Unix. The button now talks to the Virtual Machine and that talks to the platform. The button is now domain neutral towards the platform domain, popularly called "platform independent."

Domain neutrality is a powerful concept. Using it in your designs causes more reuse, because your components know less about certain domains, and are so reusable across a wider field of problems.

The domain neutrality of parts is a spectrum from total neutrality to total knowledge about a domain. One cannot design all parts at the neutral end because there would be none to express domain behavior. On the other hand, one cannot design all parts at the total knowledge end because there would be no reuse and system cost would be exorbitant. Thus system are built of parts with varying degrees of domain neutrality, but with as much neutrality as is prudent.

Strive to make your ideas and reusables as domain neutral as circumstance allows.