If the programs or the system will be called upon to perform a wide variety of moderately complex tasks which possess the potential for reuse, these reusable algorithms or "shared routines" deserve first consideration during construction. The team should develop and maintain a library of these specialized algorithms to include or to clone into each new program when it seems to be necessary or appropriate. Consider stocking up the algorithm library with routines to handle tasks such as:
In addition, provide Object-Oriented Classes to handle specialized tasks such as:
Some of the more complex or unique parsing, converting, or sequencing algorithms may already be developed, and they may be just waiting for discovery within the pages of textbooks, journals, and technical papers. Do not overlook these valuable resources. A small amount of effort can expand into tremendous savings latter as the predeveloped routines are leveraged throughout construction. Likewise, the object-oriented, graphical user interface classes can be obtained through commercially available class libraries. These libraries can usually be found either as stand-alone products, or as libraries frequently included with commercial database, code generation, or GUI front-end screen (window) development products.
Another way to perpetuate the use of reusable algorithms and "shared routines", is to either reference them or to place them directly into the "seed" skeleton programs or modules. If some of the routines have been specifically developed to encourage consistency, a project standard based around the routine may very well emerge. All of this helps to increase the overall "patterned approach" taken toward the system as well as encouraging the "inheritance" of the specialized processing.