Improving Prolog programs: Refactoring for Prolog
<|reference_start|>Improving Prolog programs: Refactoring for Prolog: 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.<|reference_end|>
@article{serebrenik2007improving,
    title={Improving Prolog programs: Refactoring for Prolog},
    author={Alexander Serebrenik, Tom Schrijvers, Bart Demoen},
    journal={arXiv preprint arXiv:cs/0702083},
    year={2007},
    number={2006-1},
    archivePrefix={arXiv},
    eprint={cs/0702083},
    primaryClass={cs.SE}
}