Refactoring - Improving the Design of Existing Code

Almost every expert in Object-Oriented Development stresses the importance of iterative development. As you proceed with the iterative development, you need to add function to the existing code base. If you are really lucky that code base is structured just right to support the new function while still preserving its design integrity. Of course most of the time we are not lucky, the code does not quite fit what we want to do. You could just add the function on top of the code base. But soon this leads to applying patch upon patch making your system more complex than it needs to be. This complexity leads to bugs, and cripples your productivity.

[1]  Gail E. Kaiser,et al.  Adequate testing and object-oriented programming , 1990 .

[2]  Martin Fowler,et al.  Analysis patterns - reusable object models , 1996, Addison-Wesley series in object-oriented software engineering.

[3]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[4]  Geoffrey A. Moore Crossing the chasm : marketing and selling technology products to mainstream customers , 1991 .

[5]  Martin L. Griss,et al.  Software reuse (panel): nemesis or nirvana? , 1998, Conference on Object-Oriented Programming Systems, Languages, and Applications.

[6]  M. Fowler Improving the Design of Existing Code , 2000 .

[7]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[8]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[9]  Ralph E. Johnson,et al.  Creating abstract superclasses by refactoring , 1993, CSC '93.

[10]  Ralph E. Johnson,et al.  Beyond the Hype: Do Patterns and Frameworks Reduce Discovery Costs? (Panel) , 1997, OOPSLA.

[11]  Steve McConnell,et al.  Code complete - a practical handbook of software construction, 2nd Edition , 1993 .

[12]  Karl J. Lieberherr,et al.  Assuring good style for object-oriented programs , 1989, IEEE Software.

[13]  Ralph E. Johnson,et al.  Refactoring and Aggregation , 1993, ISOTAS.

[14]  James Coplien,et al.  Beyond the hype (panel): do patterns and frameworks reduce discovery costs? , 1997, OOPSLA '97.

[15]  Doug Lea,et al.  Concurrent programming in Java - design principles and patterns , 1996, Java series.

[16]  Dirk Riehle,et al.  Product trader , 1997 .

[17]  Ken Auer Reusability through self-encapsulation , 1995 .

[18]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[19]  Jay Banerjee,et al.  Semantics and implementation of schema evolution in object-oriented databases , 1987, SIGMOD '87.

[20]  Anil Mital,et al.  Second Edition: A Brief Guide to the Standard Object Modeling Language , 2000 .

[21]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[22]  William F. Opdyke,et al.  Lifecycle and refactoring patterns that support evolution and reuse , 1995 .

[23]  E. M. Hartwell Boston , 1906 .

[24]  Ralph E. Johnson,et al.  A Refactoring Tool for Smalltalk , 1997, Theory Pract. Object Syst..

[25]  William F. Opdyke Refactoring Object-Oriented Software to Support Evolution and Reuse , 1995 .