In this chapter, we have learned about the various patterns and techniques for building robust software. While Julia is a great language for quick prototypes and research projects, it has all the features to build robust, mission-critical systems.
We began our journey with the idea of encapsulating data with accessor functions, which allow us to design a formal API that we can support. We also discussed a naming convention that discourages people from accessing the internal state of the object.
We looked at Julia's property interface, which allows us to implement new meanings whenever the field access dot notation is used. By extending the getproperty and setproperty! functions, we are able to control both read and write access to the fields of an object.
We also learned how to hide specific variables or functions defined in a module. This strategy can be utilized...