Theory and Practice of Logic Programming vol:8 issue:2 pages:201-215
Refactoring is an established technique from the object-oriented (OO)
programming community to restructure code: it aims at improving software
readability, maintainability and extensibility. Although refactoring is not
tied to the OO-paradigm in particular, its ideas have not been applied to
Logic Programming until now.
This paper applies the ideas of refactoring to Prolog programs. A catalogue
is presented listing refactorings classified according to scope. Some of
the refactorings have been adapted from the OO-paradigm, while others have been
specifically designed for Prolog. The discrepancy between intended
and operational semantics in Prolog is also addressed by some of the refactorings.
In addition, ViPReSS, a semi-automatic refactoring browser,
is discussed and the experience with applying ViPReSS to a large Prolog
legacy system is reported. The main conclusion is that refactoring is both
a viable technique in Prolog and a rather desirable one.