Abstract
Meaningful method names are crucial for the readability and maintainability of software. Existing naming conventions focus on syntactic details, leaving programmers with little or no support in assuring meaningful names. In this paper, we show that naming conventions can go much further: we can mechanically check whether or not a method name and implementation are likely to be good matches for each other. The vast amount of software written in Java defines an implicit convention for pairing names and implementations. We exploit this to extract rules for method names, which are used to identify “naming bugs” in well-known Java applications. We also present an approach for automatic suggestion of more suitable names in the presence of mismatch between name and implementation.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Bajracharya, S.K., Ngo, T.C., Linstead, E., Dou, Y., Rigor, P., Baldi, P., Lopes, C.V.: Sourcerer: a search engine for open source code supporting structure-based search. In: Tarr, P.L., Cook, W.R. (eds.) OOPSLA Companion, pp. 681–682. ACM Press, New York (2006)
Beck, K.: Implementation Patterns. Addison-Wesley Professional, Reading (2007)
Bloch, J.: Effective Java. Prentice-Hall, Englewood Cliffs (2008)
Caprile, B., Tonella, P.: Nomen est omen: Analyzing the language of function identifiers. In: Proceedings of the Sixth Working Conference on Reverse Engineering (WCRE 1999), Atlanta, Georgia, USA, 6-8 October 1999, pp. 112–122. IEEE Computer Society Press, Los Alamitos (1999)
Collar, E., Valerdi, R.: Role of software readability on software development cost. In: Proceedings of the 21st Forum on COCOMO and Software Cost Modeling, Herndon, VA (October 2006)
Deißenböck, F., Pizka, M.: Concise and consistent naming. In: Proceedings of the 13th IEEE International Workshop on Program Comprehension (IWPC 2005), pp. 97–106. IEEE Computer Society Press, Los Alamitos (2005)
Eierman, M.A., Dishaw, M.T.: The process of software maintenance: a comparison of object-oriented and third-generation development languages. Journal of Software Maintenance and Evolution: Research and Practice 19(1), 33–47 (2007)
Fellbaum, C.: WordNet: An Electronic Lexical Database. MIT Press, Cambridge (1998)
Frege, G.: On sense and reference. In: Geach, P., Black, M. (eds.) Translations from the Philosophical Writings of Gottlob Frege, pp. 56–78. Blackwell, Malden (1952)
Gil, J., Maman, I.: Micro patterns in Java code. In: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2005), San Diego, CA, USA, October 16-20, 2005, pp. 97–116. ACM Press, New York (2005)
Høst, E.W., Østvold, B.M.: The programmer’s lexicon, volume I: The verbs. In: Proceedings of the Seventh IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007), Washington, DC, USA, pp. 193–202. IEEE Computer Society, Los Alamitos (2007)
Høst, E.W., Østvold, B.M.: The Java programmer’s phrase book. In: Proceedings of the 1st International Conference on Software Language Engineering (SLE 2008), Springer, Heidelberg (2008)
Lawrie, D., Feild, H., Binkley, D.: Quantifying identifier quality: An analysis of trends. Journal of Empirical Software Engineering 12(4), 359–388 (2007)
Lawrie, D., Morrell, C., Feild, H., Binkley, D.: What’s in a name? A study of identifiers. In: Proceedings of the 14th International Conference on Program Comprehension (ICPC 2006), Athens, Greece, 14-16 June 2006, pp. 3–12. IEEE Computer Society Press, Los Alamitos (2006)
Liblit, B., Begel, A., Sweeser, E.: Cognitive perspectives on the role of naming in computer programs. In: Proceedings of the 18th Annual Psychology of Programming Workshop, Sussex, United Kingdom, September 2006, Psychology of Programming Interest Group (2006)
Ma, H., Amor, R., Tempero, E.D.: Indexing the Java API using source code. In: Australian Software Engineering Conference, pp. 451–460. IEEE Computer Society Press, Los Alamitos (2008)
Manning, C.D., Schuetze, H.: Foundations of Statistical Natural Language Processing. MIT Press, Cambridge (1999)
Martin, R.C.: Clean Code. Prentice-Hall, Englewood Cliffs (2008)
McConnell, S.: Code Complete: A Practical Handbook of Software Construction, 2nd edn. Microsoft Press (2004)
Pollock, L.L., Vijay-Shanker, K., Shepherd, D., Hill, E., Fry, Z.P., Maloor, K.: Introducing natural language program analysis. In: Proceedings of the 7th ACM Workshop on Program Analysis for Software Tools and Engineering (PASTE 2007), San Diego, California, USA, 2007, June 13-14, 2007, pp. 15–16. ACM, New York (2007)
Reiss, S.P.: Finding unusual code. In: Proceedings of the 23rd IEEE International Conference on Software Maintenance (ICSM 2007), pp. 34–43. IEEE Computer Society Press, Los Alamitos (2007)
Shepherd, D., Fry, Z.P., Hill, E., Pollock, L., Vijay-Shanker, K.: Using natural language program analysis to locate and understand action-oriented concerns. In: Proceedings of the 6th international conference on Aspect-oriented software development (AOSD 2007), pp. 212–224. ACM Press, New York (2007)
Shepherd, D., Pollock, L.L., Vijay-Shanker, K.: Towards supporting on-demand virtual remodularization using program graphs. In: Proceedings of the 5th International Conference on Aspect-Oriented Software Development (AOSD 2006), pp. 3–14. ACM Press, New York (2006)
Singer, J., Kirkham, C.: Exploiting the correspondence between micro patterns and class names. In: Proceedings of the Eight IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2008), pp. 67–76. IEEE Computer Society Press, Los Alamitos (2008)
Surowiecki, J.: The Wisdom of Crowds. Anchor (2005)
Witten, I.H., Frank, E.: Data Mining: Practical Machine Learning Tools and Techniques, 2nd edn. Morgan Kaufmann, San Francisco (2005)
Wittgenstein, L.: Philosophical Investigations. Prentice-Hall, Englewood Cliffs (1973)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Høst, E.W., Østvold, B.M. (2009). Debugging Method Names. In: Drossopoulou, S. (eds) ECOOP 2009 – Object-Oriented Programming. ECOOP 2009. Lecture Notes in Computer Science, vol 5653. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-03013-0_14
Download citation
DOI: https://doi.org/10.1007/978-3-642-03013-0_14
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-03012-3
Online ISBN: 978-3-642-03013-0
eBook Packages: Computer ScienceComputer Science (R0)