Coding style

Contributions to this library should be conform to the coding style rules stated in the books Object-Oriented Software Construction, 2nd edition and Eiffel, the language, 2nd printing. These rules also can be obtained here as a PDF document.

The features of all classes should always belong to one of the following feature clause categories, except in very rare cases:

Name Description
Initialization Commands used to set up the contents of objects; usually they are creation procedures. This category should be exported to NONE in order to avoid accidental calling of creation features without the createion instruction (!! or create).
Access Queries used to obtain elements in the structure.
Measurement Queries pertaining to the size of the structure.
Comparison Features (usually queries) which compare elements according to various order relations.
Status report Queries used to determine general properties of the structure, including options.
Status setting Procedures which change general properties, in particular options (which can then be queried through features of the preceding category).
Cursor movement For structures which maintain a "current position" marked by a cursor, procedures which change that position.
Element change Procedures which change elements of the structure, or add elements to it.
Removal Commands which remove elements from the structure.
Resizing Commands which change the size allocated to the structure.
Transformation Commands which may transform the overall organization of the structure.
Conversion Features which produce different structures made of some or all of the same elements.
Duplication Features which produce copies of the structure.
Basic operations Features implementing various standard mechanisms (such as arithmetic operations).
Output Commands which produce output to the user or to an external device (such as a file or a network).
Input Commands which fetch input from the user or from an external device (such as a file or a network).
Miscellaneous Anything that does not fit in the other categories (there is currently no example of this category in the Base libraries).
Obsolete Features declared obsolete, kept only for compatibility with previous versions. Such features will not appear in the flat-short form.
Inapplicable Features inherited from ancestors where they were exported to clients, but made secret or restrictively exported in the current class. Such features will not appear in the flat-short form.
Implementation Secret or restrictively exported features, used only for the implementation of the current class. Such features will not appear in the flat-short form.