Whitepapers

The KindSoftware Coding Standards

Table of Contents:

  1. Introduction
  2. Documentation
  3. Naming Conventions
  4. Semantic Properties
  5. Tools
  6. Code Examples
  7. References
  8. Specific Recommendations for:
    1. Java
    2. Eiffel
  9. Credits

Introduction

Code standards aren't just about obsession, they are about productivity, professionalism, and presentation.

This code standard is used by several companies, research groups, and numerous individuals including groups at Sun Microsystems, KindSoftware, DALi, Fulcrum Microsystems, the Compositional Computing/Infospheres Group in the Department of Computer Science at Caltech, the Security of Systems (SoS) Group in the Nijmegen Institute for Computing and Information Science at the Radboud University Nijmegen, and the KindSoftware: Software Engineering with Applied Formal Methods Group in the School of Computer Science and Informatics at University College Dublin.

Resulting products are more readable, maintainable, robust, testable, and professional.

Many people helped with the evolution of this code standard. These practices were not created in a vacuum. They are tried and true rules that have been used in producing both research and commercial systems by teams of dozens of programmers. While not all the rules are applicable to every developer or all systems, a general adherence to the rules and a belief in software engineering practices often results in happier and healthier developers and systems.

In the context of this document, "structure" means "organization, look, and feel" of a body of code. It includes elements of system and subsystem organization (packages), documentation (feature documentation, Javadoc tags, inline comments, and index files), specification (in-code and extra-code specification, running comments, index files), and development (code organization). Adhering to these standards means that every piece of code has the same structure so that a reader can instantly know where to find a piece of information (attribute, import, method, feature, etc.) without have to search through an entire source file.