Sat . 20 Jun 2020
TR | RU | UK | KK | BE |

Camel case

camel case, camel case d
Camel case also camelCase, CamelCase, camel caps or medial capitals is the practice of writing compound words or phrases such that each word or abbreviation in the middle of the phrase begins with a capital letter, with no spaces or hyphens Camel case may start with a capital letter or with a lowercase letter Common examples include: "HarperCollins", "iPhone" and "FedEx" It is also sometimes used in online usernames such as "JohnSmith", and to make multi-word domain names more legible eg in advertisements

Contents

  • 1 Variations and synonyms
  • 2 Traditional use in natural language
    • 21 In word combinations
    • 22 In transliterations
    • 23 In abbreviations and acronyms
  • 3 History of modern technical use
    • 31 Chemical formulae
    • 32 Early use in trademarks
    • 33 Computer programming
      • 331 Background: multi-word identifiers
      • 332 "Alto Keyboard" hypothesis
    • 34 Spread to mainstream usage
    • 35 History of the name "camel case"
  • 4 Current usage in computing
    • 41 Programming and coding
    • 42 Wiki link markup
    • 43 Other uses
  • 5 Criticism
  • 6 See also
  • 7 References
  • 8 External links

Variations and synonyms

The first letter of a camel case compound word may or may not be capitalized, and there is no real consensus on whether the term "camel case" generally implies an uppercase or lowercase first letter For clarity, this article calls the two alternatives upper camel case starts with upper case letter and lower camel case starts with lower case letter Some people and organizations use the term camel case only for lower camel case Other synonyms include:

StudlyCaps encompasses all such variations, and more, including even random mixed capitalization, as in MiXeD CaPitALiZaTioN typically a stereotyped allusion to 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 Camel case is also distinct from Tall Man lettering, which uses capitals to emphasize the differences between similar-looking words

Traditional use in natural language

In word combinations

The use of medial capitals as a convention in the regular spelling of everyday texts is rare, but is used in some languages as a solution to particular problems which arise when two words or segments are combined

In Italian, pronouns can be suffixed to verbs, and because the honorific form of second-person pronouns is capitalized, this can produce a sentence like non ho trovato il tempo di risponderLe "I haven't found time to answer you" - where Le means "you"

In German, the medial capital letter I, called Binnen-I, is sometimes used in a word like StudentInnen "students" to indicate that both Studenten "male students" and Studentinnen "female students" are intended simultaneously However, mid-word capitalisation does not conform to German orthography The previous example could be correctly written using parentheses as Studentinnen, analogous to "congresswoman" in English

In Irish, they are used when an inflectional prefix is attached to a proper noun, for example i nGaillimh "in Galway", from Gaillimh "Galway"; an tAlbanach "the Scottish person", from Albanach "Scottish person"; and go hÉireann "to Ireland", from Éire "Ireland In recent Scots Gaelic orthography, a hyphen has been inserted: an t-Albanach

This convention is also used by several Bantu languages eg, kiSwahili = "Swahili language", isiZulu = "Zulu language" and several indigenous languages of Mexico eg Nahuatl, Totonacan, Mixe–Zoque, and some Oto-Manguean languages

In English, medial capitals are usually only found in Scottish or Irish "Mac-" or "Mc-" names, where for example MacDonald, McDonald, and Macdonald are common spelling variants of the same name, and in Anglo-Norman "Fitz-" names, where for example both FitzGerald and Fitzgerald are found

In their English style guide The King's English, first published in 1906, H W Fowler and F G Fowler suggested that medial capitals could be used in triple compound words where hyphens would cause ambiguity—the examples they give are KingMark-like as against King Mark-like and Anglo-SouthAmerican as against Anglo-South American However, they described the system as "too hopelessly contrary to use at present"

In transliterations

In the scholarly transliteration of languages written in other scripts, medial capitals are used in similar situations For example, in transliterated Hebrew, haIvri means "the Hebrew person" and biYerushalayim means "in Jerusalem" In Tibetan proper names like rLobsang, the "r" stands for a prefix glyph in the original script that functions as tone marker rather than a normal letter Another example is tsIurku, a Latin transcription of the Chechen term for the capping stone of the characteristic Medieval defensive towers of Chechenia and Ingushetia; the capital letter "I" here denoting a phoneme distinct from the one transcribed as "i"

In abbreviations and acronyms

Medial capitals are traditionally used in abbreviations to reflect the capitalization that the words would have when written out in full, for example in the academic titles PhD or BSc In German, the names to statutes are abbreviated using embedded capitals, eg StGB Strafgesetzbuch for criminal code, PatG Patentgesetz for Patent Act, or the very common GmbH Gesellschaft mit beschränkter Haftung for Company with Limited Liability In this context, there can even be three or more "CamelCase" capitals, eg in TzBfG for Teilzeit- und Befristungsgesetz Act on Part-Time and Limited Term Occupations In French, camel case acronyms such as OuLiPo 1960 were favored for a time as alternatives to initialisms

Camel case is often used to transliterate initialisms into alphabets where two letters may be required to represent a single character of the original alphabet, eg, DShK from Cyrillic ДШК

History of modern technical use

Chemical formulae

The first systematic and widespread use of medial capitals for technical purposes was the notation for chemical formulae invented by the Swedish chemist Berzelius in 1813 To replace the multitude of naming and symbol conventions used by chemists until that time, he proposed to indicate each chemical element by a symbol of one or two letters, the first one being capitalized The capitalization allowed formulae like 'NaCl' to be written without spaces and still be parsed without ambiguity

Berzelius's system remains in use to this day, augmented with three-letter symbols like 'Uut' for unnamed elements and abbreviations for some common substituents especially in the field of organic chemistry, for instance 'Et' for 'ethyl-' This has been further extended to describe the amino acid sequences of proteins and other similar domains

Early use in trademarks

Since the early 20th century, medial capitals have occasionally been used for corporate names and product trademarks, such as

  • DryIce Corporation 1925 marketed the solid form of CO2 as "Dry ice", thus leading to its common name
  • CinemaScope and VistaVision, rival widescreen movie formats 1953
  • ShopKo 1962
  • MisterRogers, the Canadian version of Mister Rogers' Neighborhood 1962
  • AstroTurf 1967
  • ConAgra, formerly Consolidated Mills 1971

Computer programming

In the 1970s and 1980s, medial capitals were 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 However, a 1954 conference proceedings informally referred to IBM's Speedcoding system as "SpeedCo" Christopher Strachey's paper on GPM 1965, shows a program that includes some medial capital identifiers, including "NextCh" and "WriteSymbol" Charles Simonyi, who oversaw the creation of Microsoft's flagship Office suite of applications, invented and taught the use of Hungarian Notation, in which the lower case letter at the start of a variable name denotes its type

Background: multi-word identifiers

Computer programmers often need to write descriptive hence multi-word identifiers, like end of file or char table, 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, and allowing spaces inside of identifiers would significantly complicate lexical analysis breaking the source code into tokens The alternative of writing the words together as in endoffile or chartable is not satisfactory, since the word boundaries may be quite difficult to discern in the result or it may even be misleading eg chartable is ambiguous as it could be intended to mean"chart-able"—able to be charted—or "char table"—a table of characters

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"—Lisp because it worked well with prefix notation; a Lisp parser would not treat a hyphen in the middle of a symbol as a subtraction operator; COBOL because its operators were English words This convention remains in use in these languages, and is also common in program names entered at a command line, as in Unix

However, this solution was not adequate for algebra-oriented languages such as FORTRAN 1955 and ALGOL 1958, which used the hyphen as an intuitively obvious subtraction operator, and did not wish to require spaces around the hyphen, so one could write a - b as a-b These early languages instead allowed identifiers to have spaces in them, determining the end of the identifier by context; this was abandoned in later languages due to the complexity it adds to tokenization In addition, common punched card character sets of the time were uppercase only and lacked other special characters Further, FORTRAN initially restricted identifiers to six characters or fewer at the time, preventing multi-word identifiers except those made of very short words

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 known as snake case like end_of_file are still prevalent in C programs and libraries, as well as other languages such as Python However, some languages and programmers chose to avoid underscores, among other reasons to prevent confusing them with whitespace, and adopted camel case instead Two accounts are commonly given for the origin of this convention

"Alto Keyboard" hypothesis

Another account claims that the camel case 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 camel case 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 that 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 Camel case 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, as well as for the language itself A further boost was provided by Niklaus Wirth the inventor of Pascal who acquired a taste for camel case 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, the practice spread in the 1980s and 1990s, when the advent of the personal computer exposed hacker culture to the world Camel case then became fashionable for corporate trade names, initially in technical fields; mainstream usage was well established by 1990:

  • 1962 PolyGram, formerly one of the major labels of the music industry
  • 1971 AeroVironment
  • 1976 InterCity 125
  • 1977 CompuServe, UnitedHealthCare now UnitedHealthcare
  • 1978 WordStar
  • 1979 MasterCard, SportsCenter, VisiCalc
  • 1980 EchoStar
  • 1982 MicroProse, WordPerfect
  • 1983 NetWare
  • 1984 BellSouth, LaserJet, MacWorks, iDEN
  • 1985 PageMaker, EastEnders
  • 1986 SpaceCamp
  • 1987 ClarisWorks, HyperCard, PowerPoint
  • 1990 HarperCollins, SeaTac, iconic WorldWideWeb

During the dot-com bubble of the late 1990s, the lowercase prefixes "e" for "electronic" and "i" for "Internet", "information", "intelligent", etc became quite common, giving rise to names like Apple's iMac and the eBox software platform

In 1998, Dave Yost suggested that chemists use medial capitals to aid readability of long chemical names, eg write AmidoPhosphoRibosylTransferase instead of amidophosphoribosyltransferase This usage was still rare in 2012

The practice is sometimes used for abbreviated names of certain neighborhoods, eg New York City neighborhoods SoHo South of Houston Street and TriBeCa Triangle Below Canal Street and San Francisco's SoMa South of Market Such usages erode quickly, so the neighborhoods are now typically rendered as Soho, Tribeca, and Soma

Internal capitalization has also been used for other technical codes like HeLa 1983

History of the name "camel case"

The original name of the practice, used in media studies, grammars and the Oxford English Dictionary, was "medial capitals" Other names such as "InterCaps", "CamelCase" and variations thereof are relatively recent and 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 altfolklorecomputers by Avi Rappoport, with "BiCapitalization" appearing slightly later in a 1991 post by Eric S Raymond to the same group

The earliest use of the name "CamelCase" occurs in 1995, in a post by Newton Love "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 Love, "The citation above was just the first time I had used the name on USENET"

The name "CamelCase" is not related to the "Camel Book" Programming Perl, which uses all-lowercase identifiers with underscores in its sample code However, in Perl programming camel case is also commonly used

Current usage in computing

Programming and coding

Main article: Naming convention programming

The use of medial caps for compound identifiers is recommended by the coding style guidelines of many organizations or software projects For some languages such as Mesa, Pascal, Modula, Java and Microsoft's NET this practice is recommended by the language developers or by authoritative manuals and has therefore become part of the language's "culture"

Style guidelines often distinguish between upper and lower camel case, typically specifying which variety should be used for specific kinds of entities: variables, record fields, methods, procedures, types, etc These rules are sometimes supported by static analysis tools that check source code for adherence

The original Hungarian notation for programming, for example, specifies that a lowercase abbreviation for the "usage type" not data type should prefix all variable names, with the remainder of the name in upper camel case; as such it is a form of lower camel case

Programming identifiers often need to contain acronyms and initialisms that are already in upper case, such as "old HTML file" By analogy with the title case rules, the natural camel case rendering would have the abbreviation all in upper case, namely "oldHTMLFile" However, this approach is problematic when two acronyms occur together eg, "parse DBM XML" would become "parseDBMXML" or when the standard mandates lower camel case but the name begins with an abbreviation eg "SQL server" would become "sQLServer" For this reason, some programmers prefer to treat abbreviations as if they were lower case words and write "oldHtmlFile", "parseDbmXml" or "sqlServer"

Wiki link markup

Camel case is used in some wiki markup languages for terms that should be automatically linked to other wiki pages This convention was originally used in Ward Cunningham's original wiki software, WikiWikiWeb, and can be activated in most other wikis Some wiki engines such as TiddlyWiki, Trac and PMWiki make use of it in the default settings, but usually also provide a configuration mechanism or plugin to disable it Wikipedia formerly used camel case linking as well, but switched to explicit link markup using square brackets and many other wiki sites have done the same Some wikis that do not use camel case linking may still use the camel case as a naming convention, such as AboutUs

Other uses

The NIEM registry requires that XML data elements use upper camel case and XML attributes use lower camel case

Most popular command-line interfaces and scripting languages cannot easily handle file names that contain embedded spaces usually requiring the name to be put in quotes Therefore, users of those systems often resort to camel case or underscores, hyphens and other "safe" characters for compound file names like MyJobResumepdf

Microblogging and social networking sites that limit the number of characters in a message most famously Twitter, where the 140-character limit can be quite restrictive in languages that rely on alphabets, including English are potential outlets for medial capitals Using camel case between words reduces the number of spaces, and thus the number of characters, in a given message, allowing more content to fit into the limited space Hashtags, especially long ones, often use camel case to maintain readability eg #CollegeStudentProblems is easier to read than #collegestudentproblems

In website URLs, spaces are percent-encoded as "%20", making the address longer and less human readable By omitting spaces, camel case does not have this problem

Criticism

Camel case has been criticised as negatively impacting readability due to the removal of spaces and uppercasing of every word One natural language study found that replacing spaces between words with letters or digits made it harder to recognise individual words, which resulted in increased reading times

A 2009 paper describes a study that specifically compared snake_case and camel case and found that camel case identifiers could be recognised with higher accuracy among both programmers and non-programmers, and that programmers already trained in camel case were able to recognise CamelCase identifiers faster than underscored snake_case identifiers

A 2010 follow-up study, in the same conditions but using an improved measurement method, with use of eye-tracking equipment, indicates: "While results indicate no difference in accuracy between the two styles, subjects recognize identifiers in the underscore style more quickly"

Use of camel case can conflict with the regular use of uppercase letters for all caps acronyms eg to represent a concept like "the TCP IP socket ID" the writer must choose to either retain the capitalisation of the acronyms "TCPIPSocketID", which harms readability, or to retain capitalisation of only the first letter "TcpIpSocketId", which makes it harder to recognise that a given word is intended as an acronym An alternative is to follow any instance of acronymic capitalization with a re-initialization of lower case camel, as TCPIPsocketID This has the effect of enforcing the lower camel case standard

Although 'underscore' does not trip off the tongue, the need to specify 'upper case' or 'lower case' prior to each letter when memorising or communicating camel case initially appears to be a significant drawback, consequential upon making computer languages case sensitive which COBOL, for example, was not Therefore, non-case sensitive languages with words delimited by 'underscore' might appear to have the edge though they still require consistent use of capitals and/or lower case - so as to avoid causing problems when performing string searches within the code In practice, however, it is almost always clear and unambiguous simply to say, "The name of the class is 'SampleClassName' and it's camel cased"

See also

  • All caps
  • Capitalization
  • Caps lock
  • Hungarian notation
  • Letter case
  • Roman cursive
  • Roman square capitals
  • Sentence case
  • Shift key
  • Small caps
  • Snake case
  • StudlyCaps
  • Unicase

References

  1. ^ "Naming Conventions" Scala Retrieved 5 December 2012 
  2. ^ "Capitalization Styles" Retrieved 5 December 2012 
  3. ^ "Camel Case" Retrieved 10 March 2016 
  4. ^ a b c Hayes, Brian July–August 2006 "The Semicolon Wars" American Scientist Online: The Magazine of Sigma XI The Scientific Research Society art pg 2 
  5. ^ C# Coding Standards and Guidelines at Purdue University College of Technology
  6. ^ "CamelCase@Everything2com" Everything2com Retrieved 4 June 2010 
  7. ^ a b Style Guide for Python Code at wwwpythonorg
  8. ^ a b "compoundName" 29 March 1990 See discussion thread at altfolklorecomputers 
  9. ^ " If class name has embedded capitals, AppGen code fails UI tests and generated hyperlinks are incorrect – AppFuse JIRA" Issuesappfuseorg Retrieved 4 June 2010 
  10. ^ ASP Naming Conventions, by Nannette Thacker 05/01/1999
  11. ^ Iverson, Cheryl, et al eds 2007 AMA Manual of Style 10th ed Oxford, Oxfordshire: Oxford University Press ISBN 978-0-19-517633-9 
  12. ^ Christine A Hult; Thomas N Huckin "The Brief New Century Handbook – Rules for internal capitalization" Pearson Education 
  13. ^ "Brad Abrams : History around Pascal Casing and Camel Casing" Blogsmsdncom 3 February 2004 Retrieved 4 January 2014 
  14. ^ "Pascal Case" C2com 27 September 2012 Retrieved 4 January 2014 
  15. ^ "NET Framework General Reference Capitalization Styles" Msdn2microsoftcom Retrieved 4 January 2014 
  16. ^ "WikiWord < TWiki < TWiki" Twikiorg Retrieved 4 June 2010 
  17. ^ "Wiki Case" C2com 8 February 2010 Retrieved 4 June 2010 
  18. ^ Title Case in PHP at SitePoint Blogs
  19. ^ "WordTips: Intelligent Title Case Retrieved 2014-04-24" Centerforapscom Retrieved 20 June 2014 
  20. ^ "How to: Change casing in Text to TitleCase – Jan Schreuder on Net" Bloggingaboutnet 14 November 2006 Retrieved 4 January 2014 
  21. ^ Richtiges und gutes Deutsch: Das Wörterbuch der sprachlichen Zweifelsfälle Duden in German 9 7th ed Mannheim: Bibliographisches Institut 2011 p 418 ISBN 978-3411040971 
  22. ^ Fowler, Henry W; Fowler, Francis G 1908 "Chapter IV Punctuation – Hyphens" The King's English 2nd ed Oxford Retrieved 19 December 2009 
  23. ^ Jöns Jacob Berzelius 1813 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, 3, 51-52; 1814 93-106, 244-255, 353-364
  24. ^ Henry M Leicester & Herbert S Klickstein, eds 1952, A Source Book in Chemistry, 1400-1900 Cambridge, MA: Harvard
  25. ^ The Trade-mark Reporter United States Trademark Association 1930 ISBN 1-59888-091-8 
  26. ^ ""MisteRogers" 1962" Imdbcom Retrieved 4 January 2014 
  27. ^ ""Resume of Session 8" Digital Computers: Advanced Coding Techniques Summer Session 1954, Massachusetts Institute of Technology, page 8-6" PDF Retrieved 4 January 2014 
  28. ^ Strachey, Christopher October 1965 "A General Purpose Macrogenerator" Computer Journal 8 3: 225–241 doi:101093/comjnl/83225 
  29. ^ "Unitedhealthgroupcom" Unitedhealthgroupcom Retrieved 4 January 2014 
  30. ^ Farhad Manjoo 30 April 2002 "Grads Want to Study on EMacs, Too" Wiredcom Retrieved 4 June 2010 
  31. ^ Feedback, 20 June 1998 Vol 158 No 2139 New Scientist 20 June 1998
  32. ^ "The jargon file version 251 29 January 1991 follows in 15 parts – miscmisc | Google Groups" Groupsgooglecom Retrieved 23 May 2009 
  33. ^ Newton Love View profile More options "I'm happy again! – composos2advocacy | Google Groups" Groupsgooglecom Retrieved 23 May 2009 
  34. ^ Newton Love
  35. ^ Caleb Crain 23 November 2009 "Against Camel Case" New York Times 
  36. ^ J Epelboim, J Booth, R Ashkenazy, and A Taleghani R steinmans 1997 "Fillers and spaces in text: The importance of word recognition during reading" PDF Vision Research 37 20  CS1 maint: Uses authors parameter link
  37. ^ Dave Binkley and Marcia Davis and Dawn Lawrie and Christopher Morrell 2009 "To CamelCase or Under_score" IEEE 17th International Conference on Program Comprehension, 2009 ICPC '09 IEEE: 158–167 CiteSeerX 10111589499 The experiment builds on past work of others who study how readers of natural language perform such tasks Results indicate that camel casing leads to higher accuracy among all subjects regardless of training, and those trained in camel casing are able to recognize identifiers in the camel case style faster than identifiers in the underscore style  CS1 maint: Uses authors parameter link
  38. ^ Bonita Sharif and Jonathan I Maletic 2010 "An Eye Tracking Study on camelCase and under_score Identifier Styles" IEEE 18th International Conference on Program Comprehension, 20010 ICPC '10 IEEE: 196–205 download PDF An empirical study to determine if identifier-naming conventions ie, camelCase and under_score affect code comprehension is presented An eye tracker is used to capture quantitative data from human subjects during an experiment The intent of this study is to replicate a previous study published at ICPC 2009 Binkley et al that used a timed response test method to acquire data The use of eye-tracking equipment gives additional insight and overcomes some limitations of traditional data gathering techniques Similarities and differences between the two studies are discussed One main difference is that subjects were trained mainly in the underscore style and were all programmers While results indicate no difference in accuracy between the two styles, subjects recognize identifiers in the underscore style more quickly  CS1 maint: Uses authors parameter link
  39. ^ Dave Binkley and Marcia Davis and Dawn Lawrie and Christopher Morrell 2009 "To CamelCase or Under_score" IEEE 17th International Conference on Program Comprehension, 2009 ICPC '09 IEEE: 158–167 CiteSeerX 10111589499 In terms of camel-cased identifiers, this has a greater impact on identifiers that include short words and especially acronyms For example, consider the acronym ID found in the identifier kIOuterIIDPath Because of the run of uppercase letters, the task of reading kIOuterIIDPath, in particular the identification of the word ID, is more difficult  CS1 maint: Uses authors parameter link

External links

  • Examples and history of CamelCase, also WordsSmashedTogetherLikeSo
  • NET Framework General Reference Capitalization Styles
  • What's in a nAMEcq, by Bill Walsh, at The Slot
  • The Science of Word Recognition, by Kevin Larson, Advanced Reading Technology, Microsoft Corporation
  • Convert text to CamelCase
  • OASIS Cover Pages: CamelCase for Naming XML-Related Components
  • Convert text to CamelCase, Title Case, Uppercase and lowercase