Niko Stotz from F1RE, a Dutch consultancy specializing in model-driven engineering, has published a language design pattern that he encountered during his work. He named the pattern Externalized names, to be used when you have a parent with a collection of named child objects but a child may also be defined elsewhere and included via a reference.

Niko’s pattern is structurally similar to Inline definitions. Where Inline definitions focus more on the location of a definition (whether it is defined at the point of use or kept separate), Externalized names additionally argues for using interfaces and behavior to compute values, in favor of computed properties (defining property getters in constraints). The reason is that although the values of computed properties are dynamic, they are stored in the model and can thus potentially cause merge conflicts.

Find the full description of the pattern, including a checklist for its implementation, in Niko’s article on the F1RE blog.