Skip to main content
Log in

Concise and consistent naming

  • Published:
Software Quality Journal Aims and scope Submit manuscript

Abstract

Approximately 70% of the source code of a software system consists of identifiers. Hence, the names chosen as identifiers are of paramount importance for the readability of computer programs and therewith their comprehensibility. However, virtually every programming language allows programmers to use almost arbitrary sequences of characters as identifiers which far too often results in more or less meaningless or even misleading naming. Coding style guides somehow address this problem but are usually limited to general and hard to enforce rules like “identifiers should be self-describing”. This paper renders adequate identifier naming far more precisely. A formal model, based on bijective mappings between concepts and names, provides a solid foundation for the definition of precise rules for concise and consistent naming. The enforcement of these rules is supported by a tool that incrementally builds and maintains a complete identifier dictionary while the system is being developed. The identifier dictionary explains the language used in the software system, aids in consistent naming, and supports programmers by proposing suitable names depending on the current context.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Pigoski, T.M. 1996 Practical Software Maintenance. Wiley Computer Publishing.

  • Lehman, M. 2003 Software evolution threat and challenge. Professorial and Jubilee Lecture (2003) 9th international Stevens Award, hosted by ICSM.

  • Low, D. 1998 Protecting Java code via code obfuscation. Crossroads 4(3) 21–23.

    Google Scholar 

  • Sun Microsystems Code conventions for the Java programming language. Technical report, Santa Clara, CA (1999).

  • Henricson, M., Nyquist, E. 1992 Programming in C++: Rules and recommendations. Technical report, Ellemtel Telecommunication Systems Laboratories.

  • Fagan, M.E. 1976 Design and code inspections to reduce errors in program development. IBM Systems Journal 15(3) 182–211.

    Article  Google Scholar 

  • Oman, P.W., Cook, C.R. Typographic style is more than cosmetic. ACM Communications 33(5) (1990).

  • Arab, M. 1992 Enhancing program comprehension: formatting and documenting. SIGPLAN Not. 27(2) 37–46.

    Article  Google Scholar 

  • Sneed, H.M. 1996 Object-oriented cobol recycling. In: WCRE ’96, IEEE Computer Society 169.

  • Biggerstaff, T.J., Mitbander, B.G., Webster, D. 1993 The concept assignment problem in program understanding. In: ICSE ’93, IEEE CS Press.

  • Anquetil, N., Lethbridge, T. 1998 Assessing the relevance of identifier names in a legacy software system. In: CASCON ’98, IBM Press 4.

  • Rajlich, V., Wilde, N. 2002 The role of concepts in program comprehension. In: IWPC ’02, IEEE CS 271.

  • Wilde, N., Scully, M.C. 1995 Software reconnaissance: mapping program features to code. Journal of Software Maintenance 7(1) 49–62.

    Google Scholar 

  • Chen, K., Rajlich, V. 2000 Case study of feature location using dependence graph. In: IWPC ’00, IEEE CS 241.

  • Shneiderman, B. Software psychology. Winthrop Publishers, Inc. (1980).

  • Anderson, J.R. 1995 Cognitive Psychology and its implications. W. H. Freeman and Co., New Jersey.

    Google Scholar 

  • Wilson, J.Q., Kelling, G.L. 1982 Broken windows. The Atlantic Monthly 249(3).

  • Hunt, A., Thomas, D. 1999 The pragmatic programmer: From journeyman to master.

  • Weinberg, G.M. 1971 The psychology of computer programming. Van Nostrand Reinhold Co.

  • Robertson, J., Robertson, S. 2004 Volere template v10.1. Requirements specification template, Atlantic Systems Guild.

  • Allen, F.W., Loomis, M.E.S., Mannino, M.V. 1982 The integrated dictionary/directory system. ACM Comput. Surv. 14(2) 245–286.

    Article  Google Scholar 

  • O’Grady, W., de Guzman, V.P. 1996 Morphology: The analysis of word structure. In O’Grady, W., Dobrovolsky, M., Katamba, F., eds.: Contemporary Linguistics: An introduction. 3rd. edn. Longman, London and New York 132–180.

    Google Scholar 

  • Costello, F. 2002 Investigating creative language: People’s choice of words in the production of novel noun-noun compounds. In: Proceedings of the 24th Annual Conference of the Cognitive Science Society. 232–237.

  • van Rysselberghe, F., Demeyer, S. 2003 Evaluating clone detection techniques. In: ELISA 03. 25–36.

  • Baxter, I., Yahin, A., Moura, L., Sant’Anna, M., Bier, L. 1998 Clone detection using abstract syntax trees.

  • Eick, S.G., Graves, T.L., Karr, A.F., Marron, J.S., Mockus, A. 2001 Does code decay? Assessing the evidence from change management data. IEEE Transactions on Software Engineering 27(1) 1–12.

    Article  Google Scholar 

  • Tschirner, E. 2004 Breadth of vocabulary and advanced english study: An empirical investigation. Electronic Journal of Foreign Language Teaching 1(1) 27–39.

    Google Scholar 

  • Miller, G.A. 1995 Wordnet: a lexical database for english. Commun. ACM 38(11) 39–41.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Florian Deissenboeck.

Additional information

Part of this work was sponsored by the German Federal Ministry for Education and Research (BMBF) as part of the project VSEK (www.software-kompetenz.de).

Florian Deissenboeck is a research assistant in the Software & Systems Engineering group of Prof. M. Broy at the Technische Universität München. Currently he works on his PhD thesis about software quality controlling. His academic interests lie in software maintenance, software product quality and program comprehension. He studied computer science at the Technische Universität München and the Asian Institute of Technology, Bangkok.

Markus Pizka received a Dr. degree from the Technische Universität München for his work on Distributed Operating Systems in 1999. During this work he extended GNU GCC, Linux and other Open Source Software packages. He lateron shared his experiences in compilers and reverse engineering with Microsoft Research, Cambridge and went on as a project leader for a large German software company. In 2001 he rejoined the Technische Universität München as an assistant professor and shaped a software maintenance curriculum. In 2003, he founded itestra, a German software consultancy providing commercial software reengineering services.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Deissenboeck, F., Pizka, M. Concise and consistent naming. Software Qual J 14, 261–282 (2006). https://doi.org/10.1007/s11219-006-9219-1

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11219-006-9219-1

Keywords

Navigation