We build computer programs by creating named abtractions, aggregations of behaviour that can be invoked by referring to the name alone. Abstractions can be nested, meaning we can construct new, more powerful abstractions that use more primitive abstractions. Thus we can start from tiny blocks of behaviour and build arbitrarily complex systems. For this to work, however, the abstractions must be sound—in other words, the names must suit the behaviour they represent. Otherwise our tower of abstractions will collapse. Hence we see the crucial importance of naming in programming.
Despite this importance, programmers almost completely lack tools to assist them. The computer treats names as arbitrary, allowing for sloppy and inconsistent naming. Tool support for good naming would be beneficial for many reasons. Most obviously, it would help create programs that are easier to understand, and hence easier to maintain. A secondary, but equally important, effect is that good naming and good design go together. In other words, good naming strengthens the tower of abstractions.
In this thesis, we show that the method names used in Java programs are far from arbitrary. They are meaningful in a sense that relates to the behaviour they represent. By analysing the implementation of methods in real-world Java programs, we can approximate the meaning of names and gain a deeper understanding of key aspects of naming in Java. For instance, we show that it is feasible to create a tool to discover naming bugs in Java programs—methods that have been improperly named. Our analyses are completely mechanical, meaning that they require no human supervision.
List of papers.
Paper 1/Chapter 7 The Programmer’s Lexicon, Vol I: The Verbs: Einar W. Høst and Bjarte M. Østvold. Proceedings of the Seventh IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007) IEEE Computer Society, 2007. Pages 193–202. doi:10.1109/SCAM.2007.18 (c) 2007 IEEE. Personal use of this material is permitted.
Paper 2/Chapter 8 The Java Programmer’s Phrase Book: Einar W. Høst and Bjarte M. Østvold. In Proceedings of the 1st International Conference on Software Language Engineering (SLE 2008). Lecture Notes in Computer Science, Springer, 2008. Pages 322-341, vol 5452. doi:10.1007/978-3-642-00434-6_20 The original publication is available at www.springerlink.com
Paper 3/Chapter 9 Debugging Method Names: Einar W. Høst and Bjarte M. Østvold. In Proceedings of the 23rd European Conference on Object-Oriented Programming (ECOOP 2009). Lecture Notes in Computer Science, Springer, 2009. Pages 219–317, vol 5653. doi:10.1007/978-3-642-03013-0_14 The original publication is available at www.springerlink.com
Paper 4/Chapter 10 Canonical Method Names for Java: Einar W. Høst and Bjarte M. Østvold. Proceedings of the 3rd International Conference on Software Language Engineering (SLE 2010) Lecture Notes in Computer Science, Springer, 2011. pages 226-245, vol 6531. doi:10.1007/978-3-642-19440-5_14 The original publication is available at www.springerlink.com