One of the most prevalent topics of consideration in an object-oriented system is property design.  We can keep them simple or create more classes.  The first approach is simpler and faster to implement.  However, we can use objects to provide hooks we extensibility and scaling out our features.  There are trade-offs to be aware of, but we can use some guidelines to shorten the design process.

Property Design Considerations

For purposes of this episode, we will look at two paths available.  We can use a simple type (native) or use a class to define a property.  While we can also utilize collections as properties, those still boil down to one of these two paths.  You will either have a collection of native values or object instances.

A Software Upgrade

A primary benefit of the object approach for a property is that it allows us to upgrade or “power-up” a class.  A simple example of this is a greeting for a class.  We can leave it as a string, or we can provide a greeting object.  That object could start by displaying a greeting in English.  When we want to upgrade the getting, we can add support for other languages or even an interactive greeting object.

The Plugin Approach

The above example can be viewed as a plugin.  We can use this approach to provide a “quick and dirty” for the initial release and then improve it later.  This pattern is excellent in an Agile environment in particular.  We can build out functionality in one class.  Then, we can inherit and extend that class later.  The original features and functions are still available for instances built in the prior version.  Yet, we can use the new approach for new instances.  We get scalability along with stability.  We have designed our solution for growth and flexibility.  These are essential traits for an agile system.

Rob Broadhead

Rob is a founder of, and frequent contributor to, Develpreneur. This includes the Building Better Developers podcast. He is also a lifetime learner as a developer, designer, and manager of software solutions. Rob is the founder of RB Consulting and has managed to author a book about his family experiences and a few about becoming a better developer. In his free time, he stays busy raising five children (although they have grown into adults). When he has a chance to breathe, he is on the ice playing hockey to relax or working on his ballroom dance skills.

Leave a Reply