CamelCase
CamelCase (also spelled "
camel case" and sometimes known as
camel caps{{Fact|date=May 2008}} or
medial capitals) is the practice of writing
compound words or phrases in which the words are joined without
spaces and are
capitalized within the compound — as in
LaBelle,
BackColor, or
iMac. The name comes from the uppercase "bumps" in the middle of the compound word, suggestive of the
humps of a
camel.CamelCase is a standard
identifier naming convention for several
programming languages, and has become fashionable in
marketing for names of products and companies. However, CamelCase is rarely used in
formal written English, and most
style guides recommend against its use.
Variations and synonyms
For clarity, this article will call the two varieties
UpperCamelCase and
lowerCamelCase. Some people and organizations use the term
camel case only for lower camel case, and refer to upper camel case as
Pascal case.
(1)(2) In some contexts, however, the term
camel case does not discriminate between the two.Other synonyms include:{{col-begin}}{{col-3}}
- BumpyCaps(3)
- BumpyCase
- CamelCaps
- CapWords in Python(4)
- mixedCase (for lowerCamelCase) in Python
{{col-3}}
- ClCl (Capital-lower Capital-lower) and sometimes ClC
- InterCaps
- InternalCapitalization
{{col-3}}
- NerdCaps
- WikiWord or WikiCase (especially in wikis)
{{col-end}}The term
StudlyCaps is similar (but not necessarily identical) to camel case.
(5)(6)(7) In title case, three word types are not capitalized unless they are the first or last word in the title or headline: 1. conjunctions such as
and and
but, 2. prepositions such as
by,
with,
to, and
through, and 3. nonpossessive articles such as
a,
an, and
the.
History
Early uses
missing image!
- Therobe1.jpg -
The advertisement for the 1953 film The Robe debuted CinemaScope, one of the earliest product trademarks to use medial capitals.
CamelCase has always been used (albeit sporadically) in English, for example, as a traditional spelling style for certain surnames, such as in
Scottish MacLean (originally, "son of Gillean") and
Hiberno-Norman FitzGerald ("son of Gerald"). This same convention is sometimes used in English for surnames of foreign origin which include prepositions or other particles, e.g.,
DuPont (from
French Dupont or
du Pont),
DiCaprio (from
Italian Di Caprio), and
VanDyke (from
Dutch van Dijk). The actress
ZaSu Pitts, whose fame peaked in the 1930s and 1940s, sometimes spelled her
given name in CamelCase, emphasizing its derivation from two other names.From the mid-20th century, it has occasionally been used for
corporate names and product
trademarks, such as
CamelCase has also been used for
acronyms like
DoD, chemical formulas like
NaCl (early 19th century
(9)), and other technical codes like
HeLa (1983).
Origins of use in computing
The use of CamelCase became widespread only in the 1970s and 1980s, when it was adopted as a standard or alternative
naming convention for multi-word
identifiers in several
programming languages. The origin of this convention has not yet been settled.
Background: multi-word identifiers
Computer
programmers often feel the need to write descriptive (hence multi-word)
identifiers, like "
previous balance" or "
end of file", in order to improve the readability of their code. However, most popular programming languages forbid the use of spaces inside identifiers, since they are interpreted as delimiters between
tokens. The alternative of writing the words together as in "
endoffile" is not satisfactory, since the word boundaries may be quite difficult to discern in the result.Some early programming languages, notably
Lisp (
1958) and
COBOL (
1959), addressed this problem by allowing a
hyphen ("-") to be used between words of compound identifiers, as in "END-OF-FILE". However, this solution was not adequate for algebraic-oriented languages like
FORTRAN (
1955) and
ALGOL (
1958), which needed the hyphen as a subtraction operator. (FORTRAN also restricted identifiers to six characters or fewer at the time, preventing multi-word identifiers except those made of very short words). Since the common
punched card character sets of the time had no lower-case letters and no other special character that would be adequate for the purpose, those early languages had to do without multi-word identifiers. It was only in the late 1960s that the widespread adoption of the
ASCII character set made both lower case and the
underscore character "
_" universally available. Some languages, notably
C, promptly adopted underscores as word separators; and underscore-separated compounds like "
end_of_file" are still prevalent in C programs and libraries. Yet, some languages and programmers chose to avoid underscores and adopted CamelCase instead. Two accounts are commonly given for the origin of this convention.
The "Lazy Programmer" theory
One theory for the origin of the CamelCase convention holds that C programmers and
hackers simply found it more convenient than the standard underscore-based style. Indeed, the underscore key is inconveniently placed in most keyboards. Additionally, in some fonts the underscore character can be confused with a minus sign; it can be overlooked because it falls below the string of characters, or it can be lost entirely when displayed or printed underlined, or when printed on a
dot-matrix printer with a defective pin or misaligned ribbon. Moreover, early compilers severely restricted the length of identifiers (e.g., to 8 or 14 letters), or silently truncated all identifiers to that length. Finally, the small size of
computer displays available in the 1970s encouraged the use of short identifiers. It was for these reasons, some claim, that many C programmers opted to use CamelCase instead of underscores, for it yielded legible compound names with fewer keystrokes and fewer characters.
The "Alto Keyboard" theory
Another account claims that the CamelCase style first became popular at
Xerox PARC around 1978, with the
Mesa programming language developed for the
Xerox Alto computer. This machine lacked an underscore key, and the hyphen and space characters were not permitted in identifiers, leaving CamelCase as the only viable scheme for readable multiword names. The PARC Mesa Language Manual (1979) included a coding standard with specific rules for Upper- and lowerCamelCase which was strictly followed by the Mesa libraries and the Alto operating system.The
Smalltalk language, which was developed originally on the Alto and became quite popular in the early 1980s, may have been instrumental in spreading the style outside PARC. CamelCase was also used by convention for many names in the
PostScript page description language (invented by
Adobe Systems founder and ex-PARC scientist
John Warnock). A further boost was provided by
Niklaus Wirth — the inventor of
Pascal — who acquired a taste for CamelCase during a sabbatical at PARC, and used it in
Modula, his next programming language.
Spread to mainstream usage
Whatever its origins within the computing world, CamelCase spread to a wider audience in the 1980s and 1990s, when the advent of the
personal computer exposed
hacker culture to the world. CamelCase then became
fashionable for corporate
trade names, first in computer-related fields but later expanding further into the mainstream. Examples ranging from the 1970s to the 2000s give a history of the spread of the usage:
- (1975) MicroSoft (now Microsoft)
- (1977) CompuServe, UnitedHealthCare (now UnitedHealthcare (10))
- (1979) MasterCard, SportsCenter, VisiCalc
- (1980) EchoStar
- (1982) MicroProse, WordPerfect
- (1983) NetWare
- (1984) BellSouth, LaserJet, MacWorks, iDEN, NeXT
- (1985) PageMaker, EastEnders
- (1986) SpaceCamp
- (1987) ClarisWorks, HyperCard, PowerPoint
- (1990) HarperCollins
- (1991) SuperAmerica
- (1992) OutKast, ThinkPad
- (1993) AmeriCorps, EcoPark, ValuJet (now AirTran Airways), SolidWorks
- (1994) PlayStation, easyJet (an early use of CamelCase with lowercase first letter)
- (1995) WorldCom (now MCI), eBay
- (1996) RadioShack (formerly Radio Shack)
- (1997) TiVo
- (1998) DaimlerChrysler, PricewaterhouseCoopers,(11) iMac
- (1999) BlackBerry, DragonForce, SpongeBob SquarePants, jetBlue, ExxonMobil
- (2000) FedEx (formerly Federal Express), GlaxoSmithKline, PayPal
- (2001) AmerisourceBergen, ChevronTexaco (now Chevron), GameCube
- (2002) ConocoPhillips
- (2003) MySpace
- (2005) PetSmart (formerly PETsMART), YouTube
This fashion has become so pervasive that people often apply it to names that do not use it officially, e.g.
hypercorrecting Usenet to "UseNet",
Transamerica to "TransAmerica",
Photoshop to "PhotoShop",
Firefox to "FireFox",
Game Boy to "GameBoy",
Macworld to "MacWorld", and
Caltech to "CalTech".During the
dot-com bubble of the late 1990s, the lowercase prefixes "e" (for "
electronic") and "i" (for "
Internet", "
information", or perhaps "
intelligent") became quite common, giving rise to some CamelCase names like
iPod and
eBox.In 1998,
Dave Yost suggested using CamelCase for long chemical names such as AmidoPhosphoRibosylTransferase
(12). The city of
SeaTac, Washington, incorporated in 1990, is an example of a city officially spelled in CamelCase.
History of the name
The original name of the practice, used in
media studies,
grammars, and the
Oxford English Dictionary, was "medial capitals". The fancier names such as "InterCaps", "CamelCase", and variations thereof are relatively recent, and seem more common in computer-related communities. The earliest known occurrence of the term
InterCaps on Usenet is in an April 1990 post to the group
alt.folklore.computers by
Avi Rappoport,
(13) with
BiCapitalization appearing slightly later in a 1991 post by
Eric S. Raymond to the same group.
(14) The earliest use of the name "CamelCase" occurs in 1995, in a post by
Newton Love.
(15) "With the advent of programming languages having these sorts of constructs, the humpiness of the style made me call it HumpyCase at first, before I settled on CamelCase. I had been calling it CamelCase for years," said Newton, "The citation above was just the first time I had used the name on USENET."
(16)The name
CamelCase is not related to the "Camel book" (
Programming Perl), which uses all-lowercase identifiers with
underscores in its sample code.
Current usage in computing
Programming and coding style
Internal capitalization is sometimes recommended by the
coding style guidelines written for
source code (e.g., the
Mesa programming language and the
Java programming language). The recommendations contained in some of these guidelines are supported by
static analysis tools that check source code for adherence.These recommendations often distinguish between UpperCamelCase and lowerCamelCase, typically specifying which variety should be used for specific kinds of entities:
variables,
record fields,
methods,
procedures,
types, etc.One widely used Java coding style dictates that UpperCamelCase be used for
classes, and lowerCamelCase be used for
instances and
methods.
(17)Recognising this usage, some
IDEs, such as
Eclipse, implement shortcuts based on CamelCase. For instance, in Eclipse's
Content assist feature, typing just the upper-case letters of a CamelCase word will suggest any matching class or method name (for example, typing "NPE" and activating content assist could suggest "NullPointerException").The original
Hungarian notation for programming specifies that a lowercase abbreviation for the "usage type" (not data type) should prefix all variable names, with the remainder of the name in UpperCamelCase; as such it is a form of lowerCamelCase. CamelCase is the official convention for file names in Java and for the
Amiga personal computer.
Microsoft .NET recommends lowerCamelCase for parameters and UpperCamelCase (aka "Pascal Style") in most other places.
(18)Python recommends UpperCamelCase for class names.
(19)The
NIEM registry requires that
XML Data Elements use UpperCamelCase and XML Attributes use lowerCamelCase.CamelCase is by no means universal in computing. Users of several modern programming languages, notably those in the
Lisp and
Forth families, nearly always use hyphens. Among the reasons sometimes given are that doing so does not require shifting on most keyboards, that the words are more readable when they are separated, and that CamelCase may simply not be reliably preserved in case-insensitive or case-folding languages (such as
Common Lisp, that, while technically a case-sensitive language, canonicalizes (folds) identifiers to uppercase by default).
Wiki linking
Ward Cunningham's original
wiki software, the
WikiWikiWeb, uses CamelCase to identify links to other wiki pages (the name itself is also in CamelCase). This convention is still used by some other
wikis, such as
JSPWiki,
TiddlyWiki,
Trac, and
PMWiki.
Wikipedia formerly used CamelCase linking as well, but switched to explicit link markup using
ASCII characters (e.g. a pair of
square brackets), as have many wiki sites. Some sites which default to a different link markup may have an option (sometimes with a
plugin) to enable CamelCase links. Some wikis which do not use CamelCase linking may still use the CamelCase as a naming convention, such as
AboutUs.
Current usage in natural languages
CamelCase has been used in languages other than
English for a variety of purposes, including the ones below:
Orthographic markings
Camel case is sometimes used in the transcription of certain scripts, to differentiate letters or markings. An example is the rendering of
Tibetan proper names like
rLobsang: the "r" here stands for a prefix glyph in the original script that functions as
tone marker rather than a normal letter.
Inflection prefixes
Camel case may also be used when writing proper names in languages that inflect words by attaching prefixes to them. In some of those languages, the custom is to leave the prefix in lower case, and capitalize the root. This convention is used in
Irish orthography as well as
Scots Gaelic orthography; e.g., ("in
Galway"), from ("Galway"); ("the
Scottish person"), from ("Scottish person"); ("to
Ireland"), from ("Ireland).Several
Bantu languages also use this convention, e.g.,
kiSwahili ("Swahili language" in
Swahili) and
isiZulu ("Zulu language" in
Zulu).
Abbreviations and acronyms
In
French, abbreviations such as
OuLiPo (1960) were favored for a time as alternatives to acronyms.CamelCase is often used to transliterate acronyms from alphabets where two letters may be required to represent a single character of the original alphabet, e.g.,
DShK from
Cyrillic ДШК.
Honorifics within compound words
In several languages, including English,
pronouns and
possessives may be capitalized to indicate respect, e.g., when referring to the reader of a formal letter or to
God. In some of those languages, the capitalization is customarily retained even when those words occur within compound words or
suffixed to a verb. For example, in
Italian one would write ("we offer to You respectful salutations") or ("adore Him").
Other uses
In
German, all nouns carry a
grammatical gender -- which, for roles or job titles, is usually masculine. Since the
feminist movement of the
80s, some writers and publishers have been using the feminine title suffixes
-in (
singular) and
-innen (plural) to emphasize the inclusion of females; but written with a capital 'I', to indicate that males are not excluded. Example: ("letters from [male or] female readers") instead of ("letters from readers") or ("letters from female readers").
See also
References
-
[Brad Abrams : History around Pascal Casing and Camel Casing]
-
[Pascal Case]
-
[Brian Hayes, "The Semicolon Wars,"American Scientist Online: The Magazine of Sigma XI, the Scientific Research Society July-August 2006, art. pg. 2. ]
-
[Style Guide for Python Code at www.python.org]
-
It is sometimes used in reference to camel case but can also refer to random mixed capitalisation (as in "MiXeD CaPitALiZaTioN"), popularly used in online culture. Camel case is also distinct from title case, which is traditionally used for book titles and headlines. Title case capitalizes most of the words yet retains the spaces between the words.[Title Case in PHP at SitePoint Blogs]
-
[WordTips: Intelligent Title Case]
-
[How to: Change casing in Text to TitleCase - Jan Schreuder on .Net]
-
["MisteRogers" (1962)]
-
[Jöns Jacob Berzelius. Essay on the Cause of Chemical Proportions, and on Some Circumstances Relating to Them: Together with a Short and Easy Method of Expressing Them. Annals of Philosophy 2, 443-454 (1813), 3, 51-2, 93-106, 244-255, 353-364 (1814) from Henry M. Leicester & Herbert S. Klickstein, eds., A Source Book in Chemistry, 1400-1900 (Cambridge, MA: Harvard, 1952)]
-
[United Healthcare]
-
[weblink]
-
[New Scientist ‘Feedback’ Vol 158 No 2139 20 June 1998]
-
[weblink]
-
[weblink]
-
[weblink]
-
[Newton Love]
-
[weblink]
-
[Capitalization Styles]
-
[Style Guide for Python Code PEP8]
External links
CamelCaseCamelCaseCamelCaseBinnenmajuskelCamelCaseCamelCaseCamelCaseCamelCaseCamelCaseCamelCaseキャメルケースCamelCaseCamelCaseCamelCaseCamelCaseCamelCase
(...as imported from WP)
article has not been saved locally