DocumentCode
3363949
Title
The role of constructors in the context of refactoring object-oriented systems
Author
Najjar, R. ; Counsell, S. ; Loizou, G. ; Mannock, K.
Author_Institution
Dept. of Comput. Sci., London Univ., UK
fYear
2003
fDate
26-28 March 2003
Firstpage
111
Lastpage
120
Abstract
Constructors play an essential role in object-oriented (OO) languages as a means of object creation. Yet, very little empirical evidence exists on constructors, trends in their composition and how they impact comprehension and encapsulation of OO classes. In this paper, we empirically investigate the opportunities, benefits and problems of refactoring class constructors across a sample of classes from five Java systems. The refactoring used, namely, replacing multiple constructors with creation methods, was applied to each of a set of classes containing three or more constructors. Empirical results showed benefits in terms of removed (duplicated) lines of code across the majority of systems. They also showed the potential for improved class comprehension by the creation of non-constructor methods (as a replacement for constructors) and improved encapsulation of class elements through use of a private catch-all constructor. We also provide evidence from five C++ systems which suggests similar trends in constructors to those found for Java. In terms of problems encountered, frequent and inconsistent use of the super construct made refactoring prohibitively difficult in some cases; the existence of Java interfaces also means a lack of scope for constructor refactoring. The results indicate clear and tangible benefits to be gained from investigation and implementation of refactoring techniques in Java, but with caution being exercised in certain cases; refactoring in practice is not as straightforward as the theory suggests.
Keywords
C++ language; Java; encapsulation; object-oriented programming; software maintenance; C++ systems; Java; Java systems; class constructors; comprehension; creation methods; encapsulation; multiple constructors; object creation; object-oriented languages; object-oriented systems; private catch-all constructor; refactoring; Software maintenance;
fLanguage
English
Publisher
ieee
Conference_Titel
Software Maintenance and Reengineering, 2003. Proceedings. Seventh European Conference on
ISSN
1534-5351
Print_ISBN
0-7695-1902-4
Type
conf
DOI
10.1109/CSMR.2003.1192418
Filename
1192418
Link To Document