|Ada 95 Quality and Style Guide||Chapter 4|
4.2.2 Nested Packages
Use child packages rather than nested packages to present different views of the same abstraction.
Nest package specifications within another package specification only for grouping operations or hiding common implementation details.
Annex A of the Ada Reference Manual (1995) gives an example of ackage specification nesting. The specification of the generic package Generic_Bounded_Length is nested inside the specification of package Ada.Strings.Bounded. The nested package is a generic, grouping closely related operations.
Grouping package specifications into an encompassing package emphasizes a relationship of commonality among those packages. It also allows them to share common implementation details resulting from the relationship. Nesting packages allows you to organize the name space of the package in contrast to the semantic effect of nesting inside of subprograms or task bodies.
An abstraction occasionally needs to present different views to different classes of users. Building one view upon another as an additional abstraction does not always suffice because the functionality of the operations presented by the views may be only partially disjointed. Nesting specifications groups the facilities of the various views, yet associates them with the abstraction they present. Abusive mixing of the views by another unit would be easy to detect due to the multiple use clauses or an incongruous mix of qualified names.
See the rationale discussed in Guideline 4.2.1.
|< Previous Page||Search||Contents||Index||Next Page >|