Self-documenting code

From Wikipedia, the free encyclopedia
Revision as of 18:31, 16 April 2025 by 204.107.153.65 (talk) (Removed an uncited claim from 7 years ago. The usage described doesn’t align with the rest of the article, and I’ve never encountered it used that way.)
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Template:Short description Template:Refimprove Template:Use dmy dates In computer programming, self-documenting (or self-describing) source code and user interfaces follow naming conventions and structured programming conventions that enable use of the system without prior specific knowledge.[1]

Objectives

Commonly stated objectives for self-documenting systems include:

Conventions

Self-documenting code is ostensibly written using human-readable names, typically consisting of a phrase in a human language which reflects the symbol's meaning, such as article.numberOfWords or TryOpen. The code must also have a clear and clean structure so that a human reader can easily understand the algorithm used.

Practical considerations

There are certain practical considerations that influence whether and how well the objectives for a self-documenting system can be realized.

Examples

Below is a very simple example of self-documenting C code, using naming conventions in place of explicit comments to make the logic of the code more obvious to human readers.

size_t count_alphabetic_chars(const char *text)
{
    if (text == NULL)
        return 0;

    size_t  count = 0;

    while (*text != '\0')
    {
        if (is_alphabetic(*text))
            count++;
        text++;
    }

    return count;
}

Criticism

Jef Raskin criticized the belief in "self-documenting" code by saying that code cannot explain the rationale behind why the program is being written or why it is implemented in such a way.[3]

See also

References

Template:Reflist

Further reading

  • Script error: No such module "citation/CS1".


  1. REDIRECT Template:Prog-lang-stub

Template:R shell

  1. Cite error: Invalid <ref> tag; no text was provided for refs named Schach_2011
  2. a b c d e Cite error: Invalid <ref> tag; no text was provided for refs named Paul_2002_Symbols
  3. Cite error: Invalid <ref> tag; no text was provided for refs named Raskin_2005