On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
The C programming language
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Understanding the shape of Java software
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Static Members and Cycles in Java Software
ESEM '07 Proceedings of the First International Symposium on Empirical Software Engineering and Measurement
A Large-Scale Empirical Comparison of Object-Oriented Cohesion Metrics
APSEC '07 Proceedings of the 14th Asia-Pacific Software Engineering Conference
An Empirical Study into Use of Dependency Injection in Java
ASWEC '08 Proceedings of the 19th Australian Conference on Software Engineering
How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Programming language evolution via source code query languages
Proceedings of the ACM 4th annual workshop on Evaluation and usability of programming languages and tools
Hi-index | 0.00 |
Method overloading is a controversial language feature, especially in the context of Object Oriented languages, where its interaction with overriding may lead to confusing semantics. One of the main arguments against overloading is that it can be abused by assigning the same identity to conceptually different methods. This paper describes a study of the actual use of overloading in JAVA. To this end, we developed a taxonomy of classification of the use of overloading, and applied it to a large JAVA corpus comprising more than 100,000 user defined types. We found that more than 14% of the methods in the corpus are overloaded. Using sampling and evaluation by human raters we found that about 60% of overloaded methods follow one of the "non ad hoc use of overloading patterns" and that additional 20% can be easily rewritten in this form. The most common pattern is the use of overloading as an emulation of default arguments, a mechanism which does not exist in JAVA.